纵观到下面的代码片断:静态对象被破坏时动态内存被破坏了吗?
//A.h
class A
{
void f();
};
//A.cpp
#include "A.h"
void A:f()
{
map<string, string> *ThisMap = new map<string, string>;
//more code (a delete will not appear)
}
//main.cpp
#include "A.h"
int main(int argc, char **argv)
{
A object;
object.f();
//more code (a delete will not appear)
return 0;
}
当主()结束它执行,对象将被破坏。将被销毁dinamic分配的内存也签署到ThisMap?
是'object'将被销毁并从内存中移除。 ***然而,***您在'A :: f'中分配的内存将不会被释放(通过您的程序),因此您将有内存泄漏。经验法则:'删除'你'新'','删除''''你'新[]''''。 –
静态对象在哪里? – juanchopanza
除此之外,动态分配标准容器通常是非常不寻常的,在大多数情况下它并不是必需的。如果出于某种原因,它*是*需要,然后使用例如['的std :: unique_ptr'](http://en.cppreference.com/w/cpp/memory/unique_ptr)。 –