3
此C代碼(編譯爲C++)不釋放內存。該程序在'new'行開始時爲992kB,然後在分配內存後,達到10MB。釋放內存後,它只能下降到3MB。即使執行刪除[]也不會清除內存。我究竟做錯了什麼?未釋放C數組中的內存
INT iSize=8192;
struct sUsernameA
{
TCHAR *sUsername;
};
sUsernameA *sArr = new sUsernameA[iSize]();
for (INT i=0;i<iSize;i++)
{
sArr[i].sUsername = (TCHAR*)calloc(512,sizeof(TCHAR));
}
for (INT i=0;i<iSize;i++)
{
free(sArr[i].sUsername);sArr[i].sUsername = NULL;
}
delete [] sArr;
你如何測量內存消耗? – Baltasarq
這是一個關於StackOverflow的常見問題 - 大多數malloc實現爲新的分配維護一個內存池,所以在應用程序退出之前你不會看到任何被釋放的東西。 –
另請參閱:http://stackoverflow.com/questions/30860188/does-free-free-the-memory-immediately –