gpt4 book ai didi

objective-c - 返回数组(警告 : Function returns address of local variable)?

转载 作者:太空狗 更新时间:2023-10-30 03:57:57 25 4
gpt4 key购买 nike

返回一个数组(警告:函数返回局部变量的地址)?

界面

int* decimalConversion(int iX);

实现

int* decimalConversion(int iX){
int iMult[10] = {0,0,0,0,0,0,0};

...

return iMult; // <-- Warning: Function returns address of local variable
}

最佳答案

您应该为数组分配空间,如果您在该函数中使用 C,则返回在堆栈上创建的数组的地址(因此出现局部变量警告)如果不使用 obj,则使用 malloc(my_arr_size) -c 的分配。

例子:

int *my_arr = calloc(10, sizeof(int)); //make sure we get zeroed memory
//fill array
return my_arr; //should no longer give a warning

完成后只需使用与 release 相同的 free(my_arr)。我在 C 中这样做的原因是因为我可以看到您正在返回一个 int* 类型并使用 C 样式声明,所以如果您在 Obj-c 中这样做,请告诉我,我可以更改我的答案示例。

您收到此错误的原因是本地数组被放入堆栈,当您返回该数组时,您会返回堆栈帧中的地址。问题是,当该方法完成执行时,该堆栈框架不再有效,因此您不能指望该框架上的任何数据都是有效的(尽管在某些情况下这确实有效,但它被认为是不好的做法)。通过在堆上分配该数组,您可以返回一个堆地址,确保您的数据存在,直到您在指向该数据的指针上调用 free()。

关于objective-c - 返回数组(警告 : Function returns address of local variable)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6804176/

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