背景
最近看到一篇比较有意思的博客,标题是“C语言返回字符串的四种方法”,特对它作一次总结。
核心就是,如何保证一个指针变量在传递的过程中,其在内存不被自动释放,从而避免内存地址的非法引用。
相关知识点
- 指针(内存地址)在函数调用开始时,形参是对实参的内容浅拷贝,保存在栈中,调用结束后将被系统回收
结论:不可以返回函数形参。
- 静态数据的生命周期是从定义开始到程序结束
结论:可以返回局部作用域的静态数据的指针
- 堆空间的资源一般情况下由程序员手动申请和手动释放
结论:可以返回指向堆空间的指针
总结
这里已知的安全的地址传递方式有四种:
- 传递地址的地址(更深一级指针)
- 传递静态数据的地址
- 传递指向堆空间的地址
- 传递全局变量的地址