C+中的堆栈、静态和堆

C+中的堆栈、静态和堆

我已经搜索过了,但我还没有很好地理解这三个概念。我什么时候必须使用动态分配(在堆中),它的真正优势是什么?静态和堆栈的问题是什么?我可以在不分配堆变量的情况下编写整个应用程序吗?

我听说其他语言都包含了“垃圾收集器”,所以您不必担心内存问题。垃圾收集器是做什么的?

你能用这个垃圾收集器自己操作你不能做的内存吗?

有一次有人这样对我说:

int * asafe=new int;

我有一个“指针指向指针”。什么意思?其不同之处在于:

asafe=new int;

?


慕尼黑5688855
浏览 347回答 3
3回答

慕的地8271018

有人详细地说过,就像“简短的答案”一样:静态变量(类)生存期=程序运行时(1)可见性=由访问修饰符(私有/受保护/公共)确定静态变量(全局范围)生存期=程序运行时(1)可见性=它在(2)中实例化的编译单元。堆变量生存期=由您定义(新删除)可见性=由您定义(无论您将指针分配给什么)堆栈变量可见性=从声明到范围退出生存期=从声明到退出声明范围(1)更准确地说:从初始化到重新初始化编译单元(即C/C+文件)。标准没有定义编译单元的初始化顺序。(2)注意:如果在标头中实例化静态变量,每个编译单元都会得到自己的副本。
打开App,查看更多内容
随时随地看视频慕课网APP