C++动态对象创建

对象创建

当创建一个C++对象时,会发生两件事:

  1. 为对象分配内存
  2. 调用构造函数来初始化那个内存

静态内存、堆、栈

  1. 储存空间在程序开始之间就可以分配。这个储存空间在程序的整个运行期间都存在。
  2. 在函数体内部创建的临时变量,储存单元都可以在栈上被创建。
  3. 动态内存分配的对象可以从一块被称为堆的地方分配。

C 语言的实现

  • C的标准库中提供了一些函数:malloc() 以及其变种calloc() 和 realloc(). 释放内存返回给堆的函数free()

C++ 中的实现

  • 把创建一个对象的所有操作都结合在一个称为new的操作符中。当用new创建一个对象时,它就在堆里为对象分配内存,并为这块内存调用构造函数
  • new 的反面是delete,delete表达式首先调用析构函数,然后释放内存
  • 如果正删除的对象的指针是0,将不发生任何事情。为此人们经常建议在删除指针后立即把指针赋值为0以免对它删除两次。对一个对象删除两次可能会产生某些问题。

你可能感兴趣的:(C++动态对象创建)