下面的代码将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/

10-11 16:40