Re[8]: new + delete = Access Violation? Как быть?
От: FlashBack  
Дата: 20.05.03 21:15
Оценка:
Здравствуйте, Artour Bakiev, Вы писали:

AB>Здравствуйте, FlashBack, Вы писали:


FB>>Здравствуйте, Андрей Тарасевич, Вы писали:



АТ>>>А теперь ради эксперимента попробуй в финальном коде заменить 'delete[]' назад на 'delete'. Если программа снова начнет падать, что мы получим очень ценный пример, наглядно демонстрирующий необходимость использования именно 'delete[]' для удаления массивов с элементами типа 'char'. До сих пор такого примера найти не удавалось.


FB>>Пробовал.С "delete" без "[]" сразу виснет!


AB>Код, пожалуйста, на бис. Позволь нам убедится, что дело в действительн в [].


Вот кривой код:
void MyFunc(void)
{
char *buf;

buf=new char[10];
printf(buff,"Test");
delete buf;

buf=new char[15];
printf(buff,"Test");
delete buf;  /// Вот здесь выходит Access Violation ???


}


Вот рабочий код:

void MyFunc(void)
{
char *buf;

buf=new char[10];
printf(buff,"Test");
delete [10] buf;

buf=new char[15];
printf(buff,"Test");
delete [10]buf;  /// Вот здесь  Access Violation нету!


}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.