new负责在堆中找到一个足以能满足要求的内存块,而布局new操作符让您能够指定要使用的位置。程序员可以使用这种特性来设置其内存管理规程或处理需要通过特定地址进行访问的硬件。要使用布局new特性,应当包含头文件new。
#include <new>
char buffer[50];//使用静态数组为布局new操作符提供内存空间
void main()
{……
int *p=new (buffer) int [20];
……}
比较:
常规new操作符每次查找一个新的内存块进行分配;而布局new操作符使用传递给它的地址,它不跟踪哪些内存单元已经被使用,也不查找未使用的内存块,把内存管理的负担交给了程序员。
delete是用来释放常规new运算符分配的内存块,而布局new操作符分配的是buffer中的静态内存,因此不能用delete来释放。另一方面,如果buffer是使用常规new操作符创建的,便可以用常规delete操作来释放整个内存块。
布局new操作符
最新推荐文章于 2021-05-27 14:31:56 发布