C++:new操作符

Posted 没事就要敲代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++:new操作符相关的知识,希望对你有一定的参考价值。

1 new操作符的用途

C++中利用new操作符在堆区开辟数据。

注意:

  • 堆区开辟的数据,由程序员手动开辟,手动释放,释放利用操作符 delete

  • 利用new创建的数据,会返回该数据对应的类型的 指针

2 语法

语法:new 数据类型

2.1 基本语法

new 数据类型(值)

测试代码:

#include <iostream>
#include <string>

using namespace std;

//使用new在堆区分配一个int变量,并返回变量的指针
int* func1()

	int *a = new int(10);		//在堆区开辟一块内存,存放变量a,并初始化为10 

	return a;				//返回堆区中的指针变量


使用new在堆区分配一个string 变量,并返回变量的指针
string* func2()

	string *str = new string("Hellow World!");

	return str;



int main()

	int *p = func1();

	string *str = func2();

	cout << *p << endl;
	cout << *p << endl;
	cout << *str << endl;
	cout << *str << endl;

	//利用delete释放堆区数据
	delete p;

	//cout << *p << endl; //报错,被释放的空间不可访问
	cout << *str << endl;

	return 0;

输出结果:

10
10
Hellow World!
Hellow World!
Hellow World!

2.2 new与数组

new 数据类型 [数组大小]

[]中的大小必须是整型,但不必是常量。

测试代码:

使用new在堆区分配一个int数组,大小为10,并返回指向第一个int的指针。

#include <iostream>

using namespace std;

int main()

	int* arr = new int[10];

	for (int i = 0; i < 10; i++)
	
		arr[i] = i;
	

	for (int i = 0; i < 10; i++)
	
		cout << arr[i] << "  ";
	
	cout << endl;

	//释放数组 delete 后加 []
	delete[] arr;

	return 0;

输出结果:

0  1  2  3  4  5  6  7  8  9

注意:

  • 使用new开辟的数组通常称为 动态数组,但我们并没有得到一个数组类型的对象,而是得到一个数组元素类型的指针。
  • 释放数组 delete 后加 []

以上是关于C++:new操作符的主要内容,如果未能解决你的问题,请参考以下文章

对C++中new的认识

C++ new 和 delete

[转发]C++中new和malloc的区别

嵌入式C++学习 new操作符

C++中NEW是啥意思呢.急需

Effective C++笔记(11)—定制new和delete