21xrx.com
2024-11-05 21:51:53 Tuesday
登录
文章检索 我的文章 写文章
C++中使用new创建的数组如何释放?
2023-07-11 06:39:53 深夜i     --     --
C++ new 数组释放

在C++中,通过new关键字可以动态的分配内存,在程序中使用堆内存区域。在创建数组时,也可以使用new来创建。但是,使用了new之后,必须使用delete释放内存,否则会造成内存泄漏。那么,如何释放使用new创建的数组呢?

1. 使用delete[]释放

在使用new创建数组时,需要使用[]来表示创建的是一个数组,那么在释放内存时,也需要使用delete[]来释放内存。例如:

int* p = new int[10]; // 创建一个有10个元素的数组

delete[] p; // 释放内存

使用delete[]释放内存时,会自动遍历整个数组,释放所有的元素内存。如果不使用delete[],而是使用普通的delete来释放内存,只会释放数组的第一个元素,而其他的元素内存不会被释放,这会导致内存泄漏。

2. 注意别忘了使用[]

在使用new创建数组时,需要使用[]来表示创建的是一个数组,这点非常重要。因为只有[]的话,new会默认认为你是要创建一个单独的int类型的变量,而不是int类型的数组。例如:

int* p = new int(10); // 创建一个int类型的变量,值为10

delete[] p; // 错误的释放方式,会导致内存泄漏

注意到上面的代码中,使用了普通的delete[]来释放内存。因为new指定创建的是一个int类型的变量,而不是数组,所以使用delete[]并不会确保正确的释放内存。此时,应该使用普通的delete来释放内存。因此应该这样写代码:

int* p = new int[10]; // 创建一个有10个元素的数组

delete[] p; // 释放内存

总结:

使用new创建数组需要使用delete[]来释放内存,同时别忘了使用[]来指示创建的是一个数组。注意使用delete[]来释放内存时,会遍历整个数组,释放所有元素的内存。如果使用普通的delete来释放内存,则只会释放第一个元素的内存,其他元素的内存会造成内存泄漏。

  
  

评论区

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