您的位置:

动态内存分配:C++中使用new操作符

在C++中,可以使用new操作符动态地分配内存,这与静态内存分配是不同的,静态内存分配是在编译时期进行的,而动态内存分配是在运行时期进行的。使用动态内存分配可以让程序在运行的时候根据需要动态地创建数据结构,并且可以在不需要的时候释放内存,以提高程序的效率。

一、使用new操作符分配内存

//使用new操作符分配内存
int *p = new int; //分配一个int类型的内存空间
*p = 10; //将值10存储到分配的内存空间中
delete p; //释放内存空间

上述代码使用new操作符分配了一个int类型的内存空间,并且将值10存储到该内存空间中,最后使用delete操作符释放内存空间。

二、使用new操作符分配数组

//使用new操作符分配数组
int *p = new int[10]; //分配一个包含10个int类型元素的数组
for(int i=0;i<10;i++)
{
    *(p+i) = i; //将i存储到数组中
}
delete []p; //释放数组所占的内存空间

上述代码使用new操作符分配了一个包含10个int类型元素的数组,并且将0~9存储到数组中,最后使用delete操作符释放数组所占的内存空间。

三、使用new操作符分配自定义类型的对象

//使用new操作符分配自定义类型的对象
class Person
{
public:
    string name;
    int age;
};
Person *p = new Person; //分配一个Person类型的对象
p->name = "张三";
p->age = 20;
delete p; //释放内存空间

上述代码使用new操作符分配了一个Person类型的对象,并且将姓名和年龄存储到该对象中,最后使用delete操作符释放内存空间。

四、使用new操作符分配自定义类型的数组

//使用new操作符分配自定义类型的数组
class Person
{
public:
    string name;
    int age;
};
Person *p = new Person[10]; //分配一个包含10个Person类型元素的数组
for(int i=0;i<10;i++)
{
    (p+i)->name = "张三";
    (p+i)->age = i;
}
delete []p; //释放数组所占的内存空间

上述代码使用new操作符分配了一个包含10个Person类型元素的数组,并且将姓名都设置为张三,年龄依次从0~9,最后使用delete操作符释放数组所占的内存空间。

五、总结

在C++中,使用new操作符可以动态分配内存,可以分配基本数据类型,数组以及自定义类型的对象和数组,并且使用delete操作符可以释放动态分配的内存,以提高程序的效率。