Не получается освобождать память

Рейтинг: 1Ответов: 1Опубликовано: 15.11.2014

Имеется функция:

void mem_init(char *mem_buf)
{
     mem_buf = new char[2<<20];
     memset(mem_buf,0,(2<<20));
}

На вход функции идет указатель, потом производится обработка (в данном случае заполняю нулями).

В главной функции вызываю ее, скажем, 100 раз:

for(int i=0;i<100;i++)
    {
        char *c;
        mem_init(c);
        delete[] c;
    }

После вызова delete[] память чудесным образом не освобождается (смотрю Диспетчером задач Windows). В чем подвох?

С уважением maxspb.

Ответы

▲ 1

Все, разобрался, нужно передавать ссылку на указатель в функцию:

void mem_init(char *&mem_buf)
{
     mem_buf = new char[2<<20];
     memset(mem_buf,0,(2<<20));
}