来自编程语言语用学,由Scott
对象生命周期通常对应于三个主体之一 存储分配机制,用于管理对象的空间:
静态对象被赋予一个绝对地址,该地址在整个程序的执行过程中保留。
堆栈对象以后进先出顺序分配和释放,通常与子程序调用和返回一起使用。
- 可以在任意时间分配和释放堆对象。它们需要更通用(且昂贵)的存储管理 算法
醇>
是否有静态数据成员和类的静态方法 PLP书中的C ++静态对象?
在编译时或运行时分配静态数据成员和类的静态方法的存储吗?
他们在哪里分配?
感谢。
答案 0 :(得分:1)
PLP书中C ++静态对象中的类的静态数据成员和静态方法是什么?
静态数据成员,是的。而函数内部的静态对象也是如此。也是在文件范围声明的对象。
在编译时或运行时分配静态数据成员和类的静态方法的存储吗?
如果通过分配,则表示内存分配,它们的内存占用量在编译时保留,并且链接器在链接时(或加载时的动态加载程序)实际在进程空间中分配空间。无论哪种情况,都要在运行时间之前。
但是,在调用main()函数之前,在运行时,在文件或类范围声明的静态对象是初始化。
函数中定义的静态对象是不同的。它们在代码第一次流过它们时初始化。
他们在哪里分配?
链接器或加载器决定的位置。这可以通过编写自己的链接器脚本来影响(超出了我害怕的答案范围)。