内存地址的传递问题

Posted orejia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存地址的传递问题相关的知识,希望对你有一定的参考价值。

背景

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

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

相关知识点

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

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

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

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

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

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

总结

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

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

以上是关于内存地址的传递问题的主要内容,如果未能解决你的问题,请参考以下文章

Dart是值传递还是引用传递

C/C++值传递和址传递区别解析

“共享内存模型”与“消息传递模型”

NSNotificationCenter ,打印内存地址

值传递vs引用传递

为什么32位操作系统最大支持4G内存