C++ new和delete的用法

 1.new的用法

#include <iostream>
using namespace std;

struct Stu
{
	string name; int score;
};

int main()
{
	//开辟内存后,返回开辟内存空间的首地址
	int* p = new int(15);//直接赋值
	cout << *p << '\n';
	int* p1 = new int;//开辟完以后赋值
	*p1 = 20;

	//当然,也可以在开辟内存后进行解引用(本质上不是解引用,只是这样好记忆)
	cout << *p1 << '\n';
	int p2 = *new int(25);
	cout << p2 << '\n';
	int p3 = *new int;

	//没有初始化的时候,是随机值
	cout << p3 << '\n';

	//开辟一个数组
	int* arr0 = new int[3]{ 4, 5, 6 };
	cout << arr0[0] << ' ' << arr0[1] << ' ' << arr0[2] << '\n';
	int arr = *new int[3]{ 1, 2, 3 };
	cout << arr << '\n';

	//这里得到的是结构体第一个元素
	Stu* students0 = new Stu[3]{ {"kkk", 122}, {"qqq", 111}, {"AAA", 112} };
	cout << students0[0].name << ' ' << students0[1].name << ' ' << students0[2].name << '\n';
	Stu students = *new Stu[3]{ {"zhangsan", 100}, {"lisi", 99}, {"wangwu", 98} };
	cout << students.name << ' ' << students.score << '\n';

    //总结
    //指针变量 = new 数据类型
    //指针变量 = new 数据类型(初始值)
    //指针变量 = new 数据类型[开辟的数组的大小]
    //数据类型变量 = *new数据类型

    //另外需要注意,开辟内存存在失败的情况,可以增加断言来判断内存是否成功开辟
    //assert(指针变量 != NULL)

}

2.delete的用法

#include <iostream>
using namespace std;

int main()
{
	//delete只能销毁动态开辟的内存,不能销毁非动态开辟的内存
	delete p1;
	delete[] p2;//销毁动态开辟的数组
}


版权声明:本文为CK1513710764原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。