new操作符
1、作用
在堆区开辟内存,由程序员手动开辟和释放;返回该数据的指针。
2、内存的分配与释放
分配:指针变量 = new 类型名 (初始化式);
int *p = new int(10); //创建一个元素
int *arr = new int[10]; //创建数组
释放:delete 指针名;
delete p1; //释放堆区一个数据
delete[] arr; //释放堆区一个数组
3、示例
//例1
int *p = new int(10);
cout << *p << endl;
//例2
#include <iostream>
#include <string>
using namespace std;
int* func(void)
{
int *p = new int(10);
return p;
}
void test(void)
{
int *p1 = func();
cout << *p1 << endl;
cout << *p1 << endl; //堆区多次打印不释放
delete p1; //释放堆区数据
cout << *p1 << endl; //打印出错!!!
}
int main(void)
{
test();
system("pause");
return 0;
}
//实例3
void test2(void)
{
//在堆区创建10个整型数据数组,
int *arr = new int[10]; //10个元素
for (int i = 0; i < 10; i++){
arr[i] = i + 10; //赋值
}
for (int i = 0; i < 10; i++){
cout << arr[i] << endl;
}
delete[] arr; //释放数组占用的内存
}
int main(void)
{
test2();
system("pause");
return 0;
}