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 –