【C++|【C++】new/delete对象过程】
文章目录
-
-
- 引言:
- (一)new对象过程
- (二)delete对象过程
-
引言:
我们往往使用new delete对象,这个过程被编译器藏得很深,但是这个过程具体是什么?和C语言的malloc、free有什么样的区别和联系呢?那就先看看下面这个点类的设计,本文将通过这个代码进行new和delete对象的步骤的深入。
#include
using namespace std;
class Point
{
public:
Point(){}
Point(int r, int c)
{
row = r;
col = c;
}
~Point();
private:
int row;
//行
int col;
//列
};
int main()
{
//new p过程
Point* p = new Point(10, 20);
//delete p过程
delete p;
}
(一)new对象过程
//new p过程
Point* p = new Point(10, 20);
/*
* 1.申请空间:Point* p = (Ponit*)malloc(sizeof(Point));
* 2.构建对象: //定位new
*new(s) Pointer(10, 20);
* 3.返回堆空间首地址
*/
(二)delete对象过程
//delete p过程
delete p;
/*
* 1.调用析构函数:p->~Point();
* 2.释放内存空间:free(p);
p = NULL;
*/
注意:
- C++中 分配了空间不一定就有对象(对象还没有创建出来)
- 使用定位new开辟的空间,需要手动调用对象的析构函数,以及手动释放free该空间
推荐阅读
- #|C++ new/delete和new[ ]/delete[ ] 深入解析
- Windows核心编程|Windows提取环境变量
- c语言|学习了循环碰到了编写计算n的阶乘的题目,由此引发了一系列问题,包括一些初学者常见的坑,以及如何简化代码
- opencv|【OpenCV】 人脸识别
- 网络编程|TCP/IP网络编程(8) 基于Linux的多进程服务器
- c++|windows 下编译libcurl,通过url下载图片数据
- c++|C++通过url直接下载图片并保存
- 【学习笔记】
- std::cout 输出 unsigned char类型数据