我试图不断释放内存并分配内存。我一直收到错误:访问违规读取位置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
}
可能是我的问题?
感谢您的帮助!
答案 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()];