c++基础:new函数

new函数

new是用于动态分配内存的操作符。它用于在堆内存中创建一个新的对象或数据结构,并返回一个指向该内存的指针。这是C++中进行动态内存分配的主要方式之一,通常与delete操作符一起使用来释放先前分配的内存。

以下是使用new操作符的一些示例:

动态分配一个整数,并将其赋值给指针:
int *pInt = new int;
*pInt = 42;
动态分配一个对象并调用其构造函数:
class MyClass {
public:
    MyClass() {
        // 构造函数代码
    }
};

MyClass *pObj = new MyClass;
动态分配一个数组:
int *pArray = new int[5]; // 创建一个包含5个整数的数组
pArray[0] = 10;
pArray[1] = 20;
// ...

需要注意的是,使用new分配的内存需要手动释放,否则可能会导致内存泄漏。释放内存时,通常使用delete操作符:

delete pInt;    // 释放单个整数的内存
delete pObj;    // 释放对象的内存
delete[] pArray; // 释放数组的内存

请确保在不再需要分配的内存时及时释放它,以避免内存泄漏问题。在现代C++中,建议使用智能指针(如std::shared_ptr和std::unique_ptr)来管理内存,以减少手动内存管理的复杂性和错误。

new用法

在C++中,new是一个操作符,用于在堆上动态分配内存空间。它的基本语法为:

指针变量 = new 数据类型;

其中,指针变量是一个指向已分配内存空间的指针,数据类型是要分配的数据类型。

例如,如果想动态分配一个整型变量,可以使用以下语句:

int *p = new int;

这样就在堆上动态分配了一个int型变量,并将其地址赋给了指针变量p。

另外,new操作符还可以用于动态分配数组。例如,如果想动态分配一个大小为10的整型数组,可以使用以下语句:

int *p = new int[10];

这样就在堆上动态分配了一个大小为10的int型数组,并将其首元素的地址赋给了指针变量p。

使用完new分配的内存后,应该使用delete操作符来释放这些内存,避免内存泄漏。delete的使用方法为:

delete 指针变量;

例如,如果要释放前面所分配的整型变量内存,可以使用以下语句:

delete p;

如果要释放前面所分配的整型数组内存,可以使用以下语句:

delete [] p;

使用new来动态的分配内存的操作符:是分配的内存块,

new可以在运行时动态地申请内存来构造一个对象或一组对象,这些对象的生命周期由程序员控制。
当使用new时一定要使用下面的释放内存的delete,否则会内存泄漏。

new 数据类型;
new 数据类型[数组大小];

typeName * pointer_name = new typeName ;

释放掉new开辟的内存空间delete

delete 内存块的指针;
释放的是指针指向的内存,不是删除指针本身。

在C++中,使用new动态地分配内存空间,程序员需要手动释放这些内存空间以避免内存泄漏。可以使用delete表达式来释放由new运算符开辟的内存空间。

delete有两种形式,一种是释放单个对象的内存,另一种是释放一个对象数组的内存。具体用法如下:
例如:
1:释放单个对象的内存

int* ptr = new int;  //分配一个int类型的内存空间
*ptr = 10;  //给这个内存空间赋值
delete ptr;  //释放这个内存空间

2:释放一个对象数组的内存

// 分配内存
int* arr = new int[10];
// 使用内存
// ...
// 释放内存
delete[] arr;

当delete表达式执行时,它会先调用该空间中的析构函数,然后将空间返回给操作系统。如果指针不是通过new分配的,则不能使用delete来释放它,否则会导致未定义的行为。

你可能感兴趣的:(#,C++基础,c++,开发语言)