指向结构数组的指针

Pointer to an array of structs

本文关键字:指针 数组 结构      更新时间:2023-10-16

我正在尝试不断释放内存并分配内存。我不断得到错误:访问违规读取位置0xblashblash。

以下是我正在做的事情:

Block *treeBlocks1;
treeBlocks1 = new Block[topology1.length()];
//I am able to use "treeBlocks1" as needed in my code to calculate cost
while(true)
{
    delete [] treeBlocks1;
    treeBlocks1 = new Block(newTopology.length());
    //And now I get an error when trying to calculate cost using treeBlocks1
}

我可能有什么问题?

谢谢你的帮助!

new Block(newTopology.length());不是分配数组,而是使用以size_t(或类似整数值)为参数的构造函数来分配单个Block

你可能是指new Block[new Topology.length()]。或者更好的是,使用std::vector,这样您就不必担心自己分配和释放内存了。

Inside while you use()而非[],in of block,treeBlocks1=new block(newTopology.length())选中它并将()更改为[]。

treeBlocks1 = new Block[newTopology.length()]

答案很简单。。。。将CCD_ 7改变为CCD_。。。。啊。

treeBlocks1 = new Block[newTopology.length()];