Не освобождает память в массиве C

Этот код C (скомпилированный как C ++) не освобождает память. Программа начинается с 992 КБ в новой строке, затем после выделения памяти она достигает 10 МБ. После освобождения памяти она уменьшается до 3 МБ. Даже удаление [] не стирает память. Что я делаю неправильно?

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;

3

Решение

Существуют различные подходы к управлению памятью.
Например, вы можете найти объяснение некоторым из них в википедия. Я привык видеть вокруг dlmalloc, но, очевидно, есть много других техник.

В любом случае, все методы требуют scafdolding, а также некоторые из них пытаются угадать следующие шаги по управлению памятью программистом, поэтому единственный способ убедиться, что вы полностью вернули всю память в ОС, это выйти из вашего программа.

0

Другие решения


По вопросам рекламы [email protected]