c++函数返回局部变量
来源:互联网 发布:开网店软件 编辑:程序博客网 时间:2024/05/20 17:40
char* func() { char arr[] = "Hello,World\n"; // arr[] 所有元素保存在栈内存上 return arr; // 返回局部变量或临时变量的地址 /*即返回了指向栈内存的指针,而返回后栈内存都会被自动回收,main里面接收到的地址指向的内存已经不存在,变为野指针 */} int main() { printf("%s", func()); // 打印出垃圾数据,也可能打印出 "Hello,World,取决于编译器对栈内存回收的处理方法 return 0; }
改进方法如下:
char* func() { char *arr = "Hello,World\n"; // "Hello,World\n" 保存在只读常量区,非栈内存不受函数返回影响 return arr; // 其实返回的是 arr 的副本,返回后 arr 变量也销毁,但是其指向常量区不受影响 } int main() { printf("%s", func()); // 能打印出 Hello,World getchar(); return 0; }
char* func() { static char arr[] = "Hello,World\n"; // "Hello,World\n" 保存在静态存储区,非栈内存不受函数返回影响。 return arr; //返回指向静态存储区的指针 } int main() { printf("%s", func()); // 能打印出 Hello,World return 0; }
0 0
- C函数返回局部变量
- C 函数返回局部变量
- C函数返回局部变量
- c 函数 返回局部变量
- C函数返回局部变量
- C语言之函数返回局部变量
- C语言---函数返回局部变量
- c/c++函数返回局部变量数组
- 函数返回局部变量
- 函数返回局部变量
- 函数返回局部变量
- 函数返回局部变量
- 函数返回局部变量
- 函数返回局部变量
- 函数返回局部变量
- 函数返回局部变量
- 函数返回局部变量
- 函数返回局部变量
- C++内存地址分配和内存区划分简介
- SharedPreferences 存储
- CODE COMPLETE 2e Chapter 6
- I - 么
- 华为OJ(表达式求值)
- c++函数返回局部变量
- JVM 优化经验总结(原文已发表在IBM开发者论坛)
- N-Queens
- Ubuntu12.04 安装adb
- HDU-1257 最少拦截系统(LIS)
- 书摘---网络搜集整理 (11--20)
- C#操作datatable
- opencv学习笔记 split(图像分割为3通道)
- Android Studio 'The same input jar is specified twice'