下面的代码将a元素移到数组顶部
当执行达到delete tmp
时,我得到:
如果删除该语句,就没有问题。但是我不希望内存泄漏...
最佳答案
促进评论回答。
似乎您将内存分配与指针副本混淆了。在循环中,您没有进行任何内存分配。您只是在复制一个指针-不分配内存。
因此,您应该摆脱delete
:
for ( i = j; i > 0; i-- ) {
myBlk *tmp = blks[i];
blks[i] = blks[i-1];
blks[i-1] = tmp;
}
delete
仅在有内存分配时才调用-您没有分配内存。 (至少在循环内没有)关于c++ - 在删除对象(另一个…)时释放或破坏双倍,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8824213/