1
我寫在C++使用Visual Studio 2013年,我注意到用下面的簡單的代碼的異常(實測here):C++使用浮動2D陣列內存泄漏,消失如果使用雙
const int HEIGHT = 1000;
const int WIDTH = 100000;
double **p2DArray;
// Allocate memory
p2DArray = new double*[HEIGHT];
for (int i = 0; i < HEIGHT; ++i)
p2DArray[i] = new double[WIDTH];
// De-Allocate memory to prevent memory leak
for (int i = 0; i < HEIGHT; ++i)
delete[] p2DArray[i];
delete[] p2DArray;
return 0;
當我使用Windows的任務管理器在「return 0」上放置一個斷點,我可以看到應用程序的「內存」佔用空間爲0.3 MB。但是,如果我將「double」替換爲「float」或「int」,則得到「31.3 MB」。此外,通過修改HEIGHT/WIDTH,我得到不同數量的MB爲int和float而double的編號保持不變 - 0.3 MB。有人可以提供解釋嗎?
謝謝。
P.S.由於庫函數,我需要使用原始指針。
'delete'和朋友釋放內存到C++運行庫;運行時是否將內存釋放回操作系統,導致您在任務管理器中看到的內存數量減少,取決於它。 – 2015-02-05 13:33:03