V
new holt sich Speicher vom Betriebssystem. Und delete gibt Speicher auch wieder ans BS zurück.
Aber new holt sich große Brocken vom BS und gibt sie als z.B. kleine Strings an Dein Programm weiter.
delete gibt nicht sofort ohne Not alles zurück, das wäre sonst viel viel zu lahm. Daß wenigstens ein Block nicht zurückgegeben wird, damit muß absolut gerechnet werden. Daß der oder die am Ende noch allokierten Blöcke 932k groß sind, überrascht mich. Aber naja, zwischwendurch hattest Du Gigabyteweise Speicher gehabt. Vielleicht Log-Infos im Debug-Heap.
Gäbe es ein Speicherloch, so daß je länger das Programm läüft, desto mehr Speicher verschwindet, das wäre fatal.
Das Loch müßte man sehen mit:
for(;;)
testfunktion();
und im Taskmanager müßte sichtbar sein, daß der SPeicher langsam alle wird.