我对 C++ 还很陌生,我遇到的这个问题让我在过去 2 个小时内都感到困惑。我要做的是创建一个指向我的类 Word 对象的指针数组,因此是一个二维数组,即**wordPtrList
. 然后我需要删除数组中某些对象的内存并将它们的指针设置为空。我在下面写了一个我想要完成的小版本。
int main()
{
char *cArray;
cArray = new char[4];
int i;
for (i = 0; i < 3; i++)
cArray[i] = 'a';
cArray[i + 1] = '\0'; //cArray is a null terminated string
Word **wordPtrList;
wordPtrList = new Word* [3];
for (i = 0; i < 3; i++)
{
wordPtrList[i] = new Word(cArray);
}
wordPtrList[1]->del();
delete wordPtrList[1];
wordPtrList[1] = '\0';
return 0;
}
class Word
{
private:
char* ptr_;
int len_;
public:
Word(const char* word)
{
len_ = strlen(word);
ptr_ = new char[len_];
strcpy(ptr_, word);
}
~Word()
{
delete [] ptr_;
ptr_ = 0;
}
void del()
{
delete [] ptr_;
ptr_ = 0;
return;
}
};
但是,当我这样做时,我得到:
正常块后检测到调试错误堆损坏
这是在 Windows 7 上的 VS 2010 中。
所以我要问的是,如何删除对象的内存以便可以设置wordPtrList[1]
为 Null?