Это не исключение C ++, это рабочее исключение. Либо вы получили доступ к памяти, которой не было, либо вы испортили структуру данных и разрушили ее деструктор. (Я предполагаю, что вы пытаетесь обнулить блок перед delete
структурой, которую он содержит.)
В C ++ вы обычно не звоните memset
. std::fill
делает то же самое (и обычно звонит на memset
, если это возможно), но с типом security.
Если вы хотите обнулить блоки памяти перед free
их использованием, вам нужна библиотека отладки. Нет чистого способа получить доступ к памяти объекта после вызова его деструктора и до вызова free
. Отладка malloc, вероятно, является функцией вашей среды разработки.
Редактировать: возможно, вы сможете получить доступ к памяти до free
для объектов, но не к массивам, переопределив delete
. Но это НЕ занятие для начинающего / среднего уровня.