C ++ - 析构函数

时间:2011-01-23 13:11:54

标签: c++ memory-management destructor dynamic

在我正在阅读的外部C ++学习资源中。

这个陈述的例子是什么?

当变量超出范围,或者使用delete关键字显式删除动态分配的变量时,将调用类析构函数(如果存在)以帮助在从内存中删除类之前清除该类。

而且,动态分配内存是什么意思?

感谢。

4 个答案:

答案 0 :(得分:2)

section 6.9中您最喜欢的C ++教程中对此进行了解释。

答案 1 :(得分:1)

“动态分配的内存”意味着通过动态内存(通常是堆)上的new或new []运算符进行分配。

答案 2 :(得分:1)

实施例

  

当变量超出范围时

void foo()
{
   MyClass C;
   C.callSomeMethod();
}  // C is here going out of scope
  

或动态分配的变量是   使用删除显式删除   关键字

void foo()
{
  MyClass* C = new MyClass; // allocating on heap
  delete C; // deleting allocated memory
...
}

答案 3 :(得分:-4)

动态分配的内存是您自己分配的内存(calloc \ malloc \ new等)。如果你分配内存(动态) - 你也负责释放(免费)

例如,

int i; - > compiller分配内存(静态)

char * c;
c = malloc(8 * sizeof(char)); (动态)

在C ++中,当你想释放对象的内存(销毁对象)时,你可以实现一个在对象被销毁之前调用的例程(自由例程)。它可能很有用(例如,为了释放一些资源,如关闭文件)