Da tempo mi porto dietro questo dubbio amletico. Sappiamo che in C++ sotto windows ci sono (sostanzialmente) tre metodi per allocare la memoria dinamica:
- la tradizionale malloc (C standard)
- l'operatore new (C++ standard, e l'unica utilizzabile con le classi)
- HeadAlloc (specifica di Windows 32bit)
Mi piacerebbe capire le differenze (strutturali) di queste tre, per poter valutare, di caso in caso, quale è più opportuna usare, e perché.
Ad esempio, come detto, per istanziare una classe va usata la new, la quale oltre a richiedere un'area di memoria al sistema operativo, si occupa di chiamare il costruttore opportuno. Ma per semplici aree di memoria, c'è differenza tra new e malloc?
Prendendo in considerazione la terza possibilità, nel caso volessimo conservare la portabilità di un programma, conviene usare
malloc o
new, ma in questo caso mi chiedo cosa si perda rispetto all'utilizzo della HeapAlloc, nel caso si perda qualcosa, ovvero quale significato abbia l'esistenza di quest'ultima.
Michele