指向结构数组的指针

Pointer to an array of structs

我正在尝试不断释放内存和分配内存。我不断收到错误消息:访问冲突读取位置 0xblahblahblah。

这基本上是我正在做的事情:

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 这样您就不必担心自己分配和释放内存。

在内部,当您使用 () 而不是使用 [],在块前面,treeBlocks1 = new Block(newTopology.length()); 检查并更改 ( ) 到 [].

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

答案很简单....将 () 更改为 []... 呃。

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