下面的代码移动一个元件到顶端的阵列双重释放或删除对象的腐败(另一个...)
for (i = j; i > 0; i--) {
myBlk *tmp = blks[i];
blks[i] = blks[i-1];
blks[i-1] = tmp;
delete tmp;
}
作为执行到达delete tmp
,我得到:
*** glibc detected *** double free or corruption (out): 0x00007fffd556ad10 ***
如果我删除该语句,则没有问题。但我不想要内存泄漏...
为什么要删除任何元素来移动元素? – Mysticial 2012-01-11 17:58:00
我并没有删除所有东西。指针在循环中创建,并在循环结束时删除。 – mahmood 2012-01-11 17:58:59
当存在内存分配时,您只能调用delete(在这种情况下您不具备这一功能)。复制指针不会分配内存。所以只需要删除'delete'。 – Mysticial 2012-01-11 17:59:59