gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:04 25 4
gpt4 key购买 nike

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

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;

final 指向的位置赋值给 moves 指向的值。

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

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

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

关于C 内存管理与 int 指针(数组)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28388511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com