Так что я решил немного поизучаться в C ++.
Когда я вызываю функцию удаления для указателя на простой класс, который я создал, меня приветствует Debug Assertion Failure -Expression:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
. Я предполагаю, что это потому, что я неправильно обработал строку и, таким образом, вызвал повреждение памяти.
Я создал базовый класс, [I] animal [/ I], для которого определена строка, которую можно установить с помощью функции.
// name
char * ptrName;
animal::animal(char * name)
{
this->SetName(name);
};
animal::~animal()
{
delete [] ptrName;
}
void animal::SetName(char * name)
{
ptrName = name;
};
При использовании вышеуказанного класса, как показано ниже, возникает ошибка. Я пробовал и delete ptrName
, и delete [] ptrName
, но безрезультатно.
animal * cat = new animal("Optimus Prime");
delete cat;
Чего мне не хватает?