内存地址的传递问题

背景

最近看到一篇比较有意思的博客,标题是“C语言返回字符串的四种方法”,特对它作一次总结。

核心就是,如何保证一个指针变量在传递的过程中,其在内存不被自动释放,从而避免内存地址的非法引用。

相关知识点

  • 指针(内存地址)在函数调用开始时,形参是对实参的内容浅拷贝,保存在栈中,调用结束后将被系统回收

  结论:不可以返回函数形参。

  • 静态数据的生命周期是从定义开始到程序结束

  结论:可以返回局部作用域的静态数据的指针

  • 堆空间的资源一般情况下由程序员手动申请和手动释放

  结论:可以返回指向堆空间的指针

总结

这里已知的安全的地址传递方式有四种:

  • 传递地址的地址(更深一级指针)
  • 传递静态数据的地址
  • 传递指向堆空间的地址
  • 传递全局变量的地址

猜你喜欢

转载自www.cnblogs.com/orejia/p/12115289.html
今日推荐