C++new和delete详细解析
作者:网络转载 发布时间:[ 2015/5/27 14:03:14 ] 推荐标签:编程语言
C++中的new 和delete 是操作符,new 分配对象时候会自动调用构造函数,delete对象时候,会自动调用析构函数,而C语言中 malloc() 和 free() 是函数。 理论上malloc free 和 new 、delete 可以混搭用,但是好不要这样用,也不能保证程序正确运行。
C++中new 和delete的语法格式如下:
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#include <iostream>
using namespace std;
//new 和delete是操作符
//malloc() 和free() 是函数
//new 在堆上分配基础类型、分配数组类型、分配对象
int main01() {
//new基础类型
int* p = (int*)malloc(sizeof(int));
free(p);
int* p2 = new int;
*p2 = 101;
printf("*p2:%d
", *p2);
delete p2;
//开辟一个存放整数的空间,并指定该整数的初值为100
int* p3 = new int(100);
system("pause");
return 0;
}
class Test {
public:
Test(int mya, int myb) {
cout << "构造函数,我被调用了" <<endl;
a = mya;
b = myb;
}
~Test() {
cout << "析构函数,我被调用了" << endl;
}
int getA(){
return a;
}
protected:
private:
int a;
int b;
};
int main() {
//new数组
int* p1 = (int*)malloc(10*sizeof(int)); //int a[10]
p1[0] = 1 ;
free(p1);
int* p2 = new int[10];
p2[0] = 1;
p2[1] = 2;
delete [] p2;
//new对象 new操作符也会自动的调用这个类的构造函数
//delete自动的调用这个类的析构函数,说明程序员可以
//手动控制类对象的生命周期
Test* p3 = new Test(1,2);
cout << p3->getA() << endl;
delete p3;
system("pause");
return 0;
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11