21xrx.com
2024-11-22 10:02:27 Friday
登录
文章检索 我的文章 写文章
C++中new和delete的使用方法
2023-07-04 08:56:04 深夜i     --     --
C++ new delete 使用方法 内存分配

C++是一门高级编程语言,其中非常重要的一点是内存管理。new和delete是C++中非常重要的内存动态分配操作符,用于对内存进行分配和释放。

new的使用方法:

new是一个运算符,能够从堆上分配指定大小的内存块,并返回一个指向该地址的指针。它的基本语法是:


new type;

new type[n];

new (type[size]) type;

其中第一种语法是用于分配单个对象的,第二种语法是用于分配数组的,第三种语法是用于定位new的。例如:


int* p = new int;

// 分配一个可以存储一个整数的内存块,返回指向该内存块的指针

int* a = new int[10];

// 分配一个可以存储10个整数的内存块,返回指向该内存块的指针数组

char buffer[1024];

int* q = new (buffer) int[10];

// 在buffer指向的1024字节内存空间上分配10个整数,返回指向第一个整数的指针

delete的使用方法:

delete与new相反,用于释放由new分配的内存。它将释放从堆上分配的内存,并将其返回给系统。它的基本语法是:


delete pointer;

delete[] pointer;

其中第一种语法用于释放单个对象的内存, 第二种语法用于释放数组的内存。例如:


int* p = new int;

// 分配一个可以存储一个整数的内存块,返回指向该内存块的指针

delete p;

int* a = new int[10];

// 分配一个可以存储10个整数的内存块,返回指向该内存块的指针数组

delete[] a;

在使用delete操作符时,必须要注意不要重复释放同一块内存,也不要释放野指针。否则会导致程序运行出错。例如:


int* p1 = new int;

int* p2 = p1; // p1和p2指向同一块内存

delete p1;

delete p2; // 错误,重复释放同一块内存,会导致程序崩溃

int* p = NULL;

delete p; // 错误,释放野指针,会导致程序崩溃

综上所述,new和delete是C++中非常重要的内存动态分配操作符,它们的正确使用是保证程序正常运行的关键。当使用了new操作符之后,也一定要记得使用delete操作符进行释放。同时,在使用delete操作符时,一定要避免野指针和重复释放的情况。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复