Ob new oder malloc, ist sch...egal. Wenn ich zu wählen habe, würde ich - in diesem Fall - malloc nehmen, denn Sort() hat nicht viel mit C++ zu tun. Da brauche ich nicht ausgerechnet für die Allokation C++ zu nehmen. (Außerdem fange ich bei new immer an zu überlegen, ob da nicht irgendwelche Konstruktoren mit ausgeführt werden...)
Allen, die Lust haben, sich mit solchen Nichtigkeiten aufzuhalten, empfehle ich, ihre Energie in die Fehlersuche zu investieren. Da kommt man gleich auf ganz andere Gedanken. 
Es sieht nämlich nicht so aus, als ob hiermit der eigentliche Fehler behoben wäre. Es war nur ein Nebenprodukt der Fehlersuche.
Bei der riesigen Menge an Allokationen/Deallokationen, die in VDR stattfinden, muß man mit einer Fragmentierung des Heaps rechnen. Ein Anwachsen des Speicherbedarfs bedeutet also erst mal nicht notwendigerweise, dass es ein Speicherleck gibt. Es sieht allerdings verdächtig danach aus.
valgrind findet jedoch nichts. Dies bedeutet, dass valgrind es entweder übersieht, oder die Blöcke nicht wirklich verloren sind und in irgendwelchen Datenstrukturen/Listen herumgammeln.
CU
Oliver