C++ 程序中的內存分為兩個部分:
- 棧:在函數內部聲明的所有變量都將占用棧內存。
- 堆:這是程序中未使用的內存,在程序運行時可用於動態分配內存。
很多時候,您無法提前預知需要多少內存來存儲某個定義變量中的特定信息,所需內存的大小需要在運行時才能確定。在 C++ 中,您可以使用特殊的運算符為給定類型的變量在運行時分配堆內的內存,這會返回所分配的空間地址。這種運算符即 new 運算符。如果您不再需要動態分配的內存空間,可以使用 delete 運算符,刪除之前由 new 運算符分配的內存。
如果堆內存已使用完,則可能無法成功分配內存,所以可以檢查new運算符返回的指針是否為空指針:
double* pvalue = NULL; if (!(pvalue = new double)) { cout << "out of memory." << endl; exit(1); }
new和malloc()區別
malloc() 函數在 C 語言中就出現了,在 C++ 中仍然存在,但建議盡量不要使用 malloc() 函數。new 與 malloc() 函數相比,其主要的優點是,new 不只是分配了內存,它還創建了對象。

數組的動態內存分配
double* pvalue = NULL; pvalue = new double[20]; delete[] pvalue;
