为了账号安全,请及时绑定邮箱和手机立即绑定

C+中的堆栈、静态和堆

C+中的堆栈、静态和堆

C++
慕尼黑5688855 2019-06-26 15:15:57
C+中的堆栈、静态和堆我已经搜索过了,但我还没有很好地理解这三个概念。我什么时候必须使用动态分配(在堆中),它的真正优势是什么?静态和堆栈的问题是什么?我可以在不分配堆变量的情况下编写整个应用程序吗?我听说其他语言都包含了“垃圾收集器”,所以您不必担心内存问题。垃圾收集器是做什么的?你能用这个垃圾收集器自己操作你不能做的内存吗?有一次有人这样对我说:int * asafe=new int;我有一个“指针指向指针”。什么意思?其不同之处在于:asafe=new int;?
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

有人详细地说过,就像“简短的答案”一样:

  • 静态变量(类)
    生存期=程序运行时(1)
    可见性=由访问修饰符(私有/受保护/公共)确定

  • 静态变量(全局范围)
    生存期=程序运行时(1)
    可见性=它在(2)中实例化的编译单元。

  • 堆变量
    生存期=由您定义(新删除)
    可见性=由您定义(无论您将指针分配给什么)

  • 堆栈变量
    可见性=从声明到范围退出
    生存期=从声明到退出声明范围


(1)更准确地说:从初始化到重新初始化编译单元(即C/C+文件)。标准没有定义编译单元的初始化顺序。

(2)注意:如果在标头中实例化静态变量,每个编译单元都会得到自己的副本。


查看完整回答
反对 回复 2019-06-26
  • 3 回答
  • 0 关注
  • 346 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信