我有这个代码,我想知道内存分配.
void f(){
static A a;
//Other things...
}
class A {
public:
A();
private:
AnotherObjectType anotherObject;
};
Run Code Online (Sandbox Code Playgroud)
将在哪里anotherObject分配?在static代码段或其他地方?是否存在anotherObject被覆盖的风险?(f将被召唤几次).
所有非堆对象都将位于静态段中,位于f()的静态A实例中.
关于覆盖,如果你在多线程代码中使用了各种单例惯用语,这可能发生在旧的C/C++中.但是,例如,较新的gcc版本使用新标准要求进行静态对象的自动线程安全初始化.请参阅例如C++ 11中的本地静态变量初始化线程安全吗?
| 归档时间: |
|
| 查看次数: |
522 次 |
| 最近记录: |