简单的问题,但这里的其他类似问题是不处理这个具体案例,或者我可以找到。
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;
在更改指针后,我应该如何释放移动的记忆?
答案 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];