对象创建
当创建一个C++对象时,会发生两件事:
- 为对象分配内存
- 调用构造函数来初始化那个内存
静态内存、堆、栈
- 储存空间在程序开始之间就可以分配。这个储存空间在程序的整个运行期间都存在。
- 在函数体内部创建的临时变量,储存单元都可以在栈上被创建。
- 动态内存分配的对象可以从一块被称为堆的地方分配。
C 语言的实现
- C的标准库中提供了一些函数:malloc() 以及其变种calloc() 和 realloc(). 释放内存返回给堆的函数free()
C++ 中的实现
- 把创建一个对象的所有操作都结合在一个称为new的操作符中。当用new创建一个对象时,它就在堆里为对象分配内存,并为这块内存调用构造函数
- new 的反面是delete,delete表达式首先调用析构函数,然后释放内存
- 如果正删除的对象的指针是0,将不发生任何事情。为此人们经常建议在删除指针后立即把指针赋值为0以免对它删除两次。对一个对象删除两次可能会产生某些问题。
网友评论