【发布时间】:2020-07-26 23:27:53
【问题描述】:
我写了这门课:
class StaticList
{
private:
int headFree;
int headList;
int locNew;
StaticListNode* listNodeArr;
public:
StaticList(int numberOfElements);
~StaticList();
void addToStaticList(int ComputerNum);
int getHeadList();
int getHeadFree();
StaticListNode* getListNodeArr();
void show() const;
};
我进行了动态分配:
StaticList::StaticList(int numberOfElements)
{
headFree = 1; //Because the first headFree is 1 (the 0 cell is dummy)
headList = -1;
locNew = -1;
this->listNodeArr = new StaticListNode[numberOfElements];
for (int i = 0; i < numberOfElements - 1; i++)
listNodeArr[i].setNext(i + 1);
listNodeArr[numberOfElements].setNext(-1);
}
问题是当我尝试通过 d'tor 删除分配时,它给了我错误:
可能是什么问题?我错过了什么?
谢谢!
【问题讨论】:
-
你能给我们
StaticListNode的会员吗? -
class StaticListNode的成员是:int next, data。 -
确保你在析构函数中使用
delete[] this->listNodeArr;,而不仅仅是delete this->listNodeArr -
也许
next应该有StaticListNode*类型?它是到下一个节点的链接吗?在您的实现中,您不能在next上调用delete,因为它不是指针 -
当你为
numberOfElements分配元素时,listNodeArr[numberOfElements].setNext(-1);对你来说是一个无效的地方。将其更改为[numberOfElements -1]
标签: c++ visual-studio compiler-errors dynamic-memory-allocation delete-operator