当前位置: 首页 > 工具软件 > Memory stack > 使用案例 >

address of stack memory associated with local variable ‘c returned原因查找

钦英发
2023-12-01

char* stack_string(){

char c[10] = "hello";

return c;//这里会直接报错

}

因为不能直接将一个数组直接返回

在栈使用完之后会自动销毁//

我自己的理解:即在函数中,不可以直接返回一个数组,因为存不住

char* heap_string(){

char *p = (char*)malloc(10);//堆空间不会因为代码结束后而销毁

strcpy(p,"hello");

return p;

}

///但是当利用指针p去指向一个堆空间时(在函数创建好),在主函数中将p赋给一个新的指针,这样是成立的。

总结:即不可以直接将数组返回;正确方式:创建一个堆空间和一个指向它的指针,再返回它的指针。

 类似资料: