( tr3w | 2013. 10. 29., k – 08:52 )

Csak remélni merem, hogy ez nem így van. :)

(Mi történik, ha kevés a memória? Akkor sem hív még malloc-ot? Nem arról van-e szó, hogy megadhatod mi az a memória ami mindenképp kell, vagy várhatóan kell, így optimalizálva a futást kicsit?)

Mondj egy olyan dolgot amit a java-c# meg tud tenni memóriakezelés közben és ami c/c++ esetén nem lehetséges. Én egy dolgot tudok: elvileg át tudja pakolni az objektumokat a memóriában, megszüntetve a fragmentálódást. Hogy ezt valóban megteszi-e azt nem tudom, de nem tűnik egy olcsó műveletnek.

Ha jól sejtem az az infó hiányzik, hogy a malloc hívás nem csak egy vékony wrapper a kernel hívás felett, egész sok mindent megoldhat magában, akár még kapásból lefoglalhatna hatalmas területeket is induláskor.
Mint ahogy a free sem feltétlen adja vissza a memóriát az OS-nek. (Sőt, azt is megkockáztatom, hogy ilyet soha nem tesz...)
Csak egy példa, hogy mi mindent csinálhat egy malloc implementáció:
http://goog-perftools.sourceforge.net/doc/tcmalloc.html

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o