指向结构数组的指针
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()];
我正在尝试不断释放内存和分配内存。我不断收到错误消息:访问冲突读取位置 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()];