我写了这个类:
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删除分配时,它会给我错误:
在此处输入图像描述
可能是什么问题?我错过了什么?
谢谢!
当您为数组中的n个元素分配时,array[n]
是您无法访问的地方。
当你调用delete
或delete[]
时,它想释放一些它不在其中的内存。
所以
listNodeArr[numberOfElements].setNext(-1);
是类StaticListNode
的数组中的无效位置将其更改为
listNodeArr[numberOfElements - 1].setNext(-1);
或0
和numberOfElements
之间的正确位置