2

是否保证此函数不会造成任何内存泄漏(中没有额外分配SomeObject):

void FreeFunction()
{
   static boost::scoped_ptr<SomeObject> MyStaticObject(new SomeObject);
}

我从未使用过静态分配和智能指针的组合。我的编译器似乎可以正常工作,但我想知道这是否总是清理分配的内存。

4

1 回答 1

6

是的,没有内存泄漏。
这里的static意思是变量MyStaticObject在第一次调用时被初始化FreeFunction(),然后它在程序的整个生命周期中保持活动状态(就像任何其他静态变量一样)。
C++ 运行时安排并确保它MyStaticObject在某个时候被销毁。

于 2012-05-24T11:34:42.870 回答