假设我有这样的功能:
MyClass &MyFunction(void)
{
static MyClass *ptr = 0;
if (ptr == 0)
ptr = new MyClass;
return MyClass;
}
问题是在程序退出时,ptr 变量是否会变得无效(即该 ptr 的内容被退出进程清除)?我意识到这个函数会泄漏,但这只是一个简单的例子。
除了指针之外,同样的问题也适用于其他原语。如果我有一个静态整数,该整数的值是在整个退出过程中始终保持不变还是由于静态销毁顺序问题而可变?
编辑:
澄清一下,我想知道静态指针(或任何其他原始类型,如 int 或 float)的内容实际发生了什么,而不是它指向的内存。例如,假设 ptr 指向某个内存地址,我想在其他静态类的析构函数中检查该地址。我可以依赖 ptr 的内容不会改变的事实(即在静态销毁过程中不会清除指针值)吗?
谢谢,乔