簡體   English   中英

使用float 2d數組的C ++內存泄漏,如果我使用double則消失

[英]C++ memory leak using float 2d array, disappears if I use double

我使用Visual Studio 2013用C ++編寫。我注意到以下簡單代碼(在此處找到)異常:

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的任務管理器在“返回0”上設置斷點時,我可以看到該應用程序的“內存”占用空間為0.3 MB。 但是,如果將“ double”替換為“ float”或“ int”,則會得到“ 31.3 MB”。 此外,通過修改HEIGHT / WIDTH,我獲得了用於intfloat的不同數量的MB,而用於double的數量卻保持不變-0.3 MB。 有人可以提供解釋嗎?

謝謝。

附言:由於庫函數,我需要使用原始指針。

您可以很容易地獲得有關內存泄漏的調試報告,例如使用Visual StudioValgrind

您的代碼不會產生帶有floatdouble的泄漏,這是完全可以的。 實際上,您不應該依賴任務管理器提供給您的數字。 它們充其量只是一個大概的近似值,僅僅是因為您調用了delete並不意味着立即將內存分配給了OS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM