Здравствуйте.
Скажите, пожалуйста что я неправильно делаю. При освобождении памяти.
Выделяем память:
char **VIRTUAL = NULL;
if (VIRTUAL == NULL)
{
VIRTUAL = new char*[50];
for (i = 0; i < 50; i++)
VIRTUAL = new char[50];
}
Освобождаем:
if (VIRTUAL != NULL)
{
for (i = 0; i < 50; i++)
delete VIRTUAL;
delete VIRTUAL;
VIRTUAL = NULL;
}
С уважением, Дмитрий.
new и delete освобождение и выделение памяти
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
xadd, Если ты оператором new выделяешь МАССИВ (new char*[50]; new char[50]; ), то при освобождении delete-ом надо указывать, что освобождается именно массив, а не "единственный" экземпляр.
То есть, не:
а:
То есть, не:
Код: Выделить всё
for (i = 0; i < 50; i++)
delete VIRTUAL[i];
delete VIRTUAL;
Код: Выделить всё
for (i = 0; i < 50; i++)
delete [] VIRTUAL[i];
delete [] VIRTUAL;
Спасибо.
С Уважением, Дмитрий
С Уважением, Дмитрий