我写了这堂课:
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删除分配时,它给了我error
可能是什么问题?我想念什么?
谢谢!
当您为数组中的n个元素分配时,array[n]
是您无法访问的位置。
[当您调用delete
或delete[]
时,它想释放不是它的内存。
so
listNodeArr[numberOfElements].setNext(-1);
在类StaticListNode
的数组中是无效位置更改为
listNodeArr[numberOfElements - 1].setNext(-1);
或任何在0
和numberOfElements
之间正确的位置