C使用int指针(数组)进行内存管理



这个问题很简单,但这里的其他类似问题都不涉及这个特定的案例,或者我可以找到。

int * moves;
moves = malloc(540); //540 is the most i will ever need, usually less
someFunctionThatFillsSomeOfThoseSlots // also returns how many slots were used
int * final = malloc(size+1);
for(x = 0; x < size; x++, final++, moves++)
    final = moves;
final -= size;

在改变了指针之后,我应该如何释放移动的内存?

final = moves;

将变量final重新分配给moves,因此刚刚分配的指针在泄漏的内存中丢失。

你的意思可能是:

*final = *moves;

其将moves所指向的值分配给final所指向的位置。

但这并不能解决你的问题,因为如果你丢失了malloc最初为moves提供的地址,你就不能free。你可以做free(moves - size),但这很复杂。

为什么不直接使用[]运算符呢?

for (int x = 0; x < size; ++x)
  final[x] = moves[x];

相关内容

  • 没有找到相关文章

最新更新