такой код:
const char* str = "hi";
delete [] str;
вызывает эксепшн:
HEAP[tests.exe]: Invalid address specified to RtlValidateHeap( 00D90000, 0014CC20 )
В чем дело?
Я понимаю, что вы можете сослаться на гугл, ибо вопрос может показаться глупым и уже сотню раз поднимавшимся, но, серьезно, я погуглил и не смог найти что-то относящееся к конкретному случаю и что-то понятное для меня, как новичка. Короче, буду рад если ответите, прогеры.
Ты пытаешься удалить строковой литерал. Delete только для тех вещей, которые с помощью new созданы
потому что это не динамически аллоцированная память
запомни простое правило - чисти через delete только выделлную через new память (malloc и free соотв.)
в тексте эксепшна всё написано же. указатель не из heap
если точнее, к new должен быть delete, а к new[] должен быть delete[]
Нельзя удалять через delete то, что не выделял через new
Google тут не нужен, нужен CPR, и статья про delete.
Обсуждают сегодня