指向一组结构的指针

时间:2015-10-29 22:42:28

标签: c++ arrays memory struct allocation

我试图不断释放内存并分配内存。我一直收到错误:访问违规读取位置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
}

可能是我的问题?

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

new Block(newTopology.length());未分配数组,它使用构造函数分配单个Block,该构造函数将size_t(或类似的整数值)作为参数。

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

答案 1 :(得分:0)

在使用()而不是使用[]时,使用块的前面, treeBlocks1 = new Block(newTopology.length()); 检查它并将()更改为[]。

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

答案 2 :(得分:0)

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

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