C内存管理与int指针(数组)?

时间:2015-02-07 23:02:42

标签: c pointers memory malloc free

简单的问题,但这里的其他类似问题是不处理这个具体案例,或者我可以找到。

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;

在更改指针后,我应该如何释放移动的记忆?

1 个答案:

答案 0 :(得分:3)

final = moves;

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

你的意思是:

*final = *moves;

指定final指向的位置,moves指向的值。

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

为什么不使用[]运营商?

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