编译器错误 C2541 - 'delete':删除:无法删除不是指针的对象



我写了这个类:

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]是您无法访问的地方。

当你调用deletedelete[]时,它想释放一些它不在其中的内存。

所以

listNodeArr[numberOfElements].setNext(-1);

是类StaticListNode的数组中的无效位置将其更改为

listNodeArr[numberOfElements - 1].setNext(-1);

0numberOfElements之间的正确位置

最新更新