Naravno da neće raditi za real-mode OS-eve (MS-DOS i njegova 16-bitna grafička sučelja eehh) koji uopće ne poznaju koncept virtualne memorije ;) Na svim modernim OS-evima u zadnjih 10 god ne bi trebalo biti problema. NT kernel održava AVL stablo VAD (Virtual Address Descriptor) struktura koje opisuju izgled procesovog adresnog prostora (opseg rezerviranih (svaki page mora biti rezerviran prije nego je committed, tako da sigurno ovdje završi) pages, permisije, dijeljenje..).
Na Solarisu je to također AVL-stablo seg_t struktura, i odatle dolazi famozni pojam segmentation fault, kad se dereferencira virtualna adresa neprisutna ni u jednom mapiranom segmentu. Generirani SIGSEG se sinkrono dispatcha u procesov uarea (koji služi za dispatching signala preko aslwp LWP-a) iz ISSIG makroa pri izlasku iz pozvanog syscalla ili iz recimo page fault handlera. Vjerojatno je sl. na linuxu i ostalim *nixoidima.
Što se tiče općenito memory leakova na Windows platformi, važno je zapamtiti da memory leakovi povećavaju procesovu privatnu virtualnu veličinu, a ne veličinu working seta. WS je veći od stvarne potrošnje procesa jer se za svaki proces broje i shared pages. Za točniju potrošnju od ukupne fizičke memorije treba oduzeti slobodnu memoriju (Available bytes), memoriju koju koristi OS (nonpaged pool, resident page pool, resident OS & driver code), te veličinu modified liste. Veličinu ovog zadnjeg faktora je moguće dobiti
jedino iz kernel debuggera (!vm 1 komandom).
Što se tiče std::auto_ptr, to će u principu raditi samo za objekte alocirane unutar scope-a, jer će pri njihovom izlasku se automatski pozvati delete nad objektima sa kojim su kreirani. Ali to znači da objekt neće biti oslobođen ako sve do kraja bloka, čak i ako nije više potreban nakon nekog trenutka! Koliko sam shvatio, auto_ptr nije najsretnije rješenje za dijeljene objekte u multithreaded okolini, pored zaštite od double deletion i sl. suptilnih bugova, jer je pravilno implementirati prenošenje ownershipa sa jednog threada na drugi pravi PITA, pogotovo recimo za Javu koja je 10 god imala problema sa tim (mislim da je taj problem riješen u Javi 5).
Najbolje bi bilo da je C++ bio projektiran da podržava GC od samog početka. Šteta što su Stepanov, Stroustrup, Koening i ostala ekipa iz Bel labsa imali puno glupih predrasuda za GC. U zadnjih 20 god, ne postoji ni jedan jedini novi mainstream jezik koji nema integriran GC, i C++ ima sve pretpostavke da u roku 5 god potpuno preuzme tron COBOL-a 90-ih po tom pitanju, ako se nešto radikalno ne promijeni (a neće).