C++中的placement new是什么?(在指定内存上创建对象)

admin 百科 16
placement new 是 C++ 中不分配内存、仅在指定地址调用构造函数的 new 表达式;需手动调用析构函数,不可用 delete 销毁,常用于内存池、STL 容器及嵌入式系统。

C++中的placement new是什么?(在指定内存上创建对象)-第1张图片-佛山资讯网

placement new 是 C++ 中一种特殊的 new 表达式,它不分配内存,而是直接在你已提供的、预先分配好的内存地址上构造对象。

核心作用:只调用构造函数,不申请堆内存

普通 new 会做两件事:调用 operator new 分配内存,再在该内存上调用构造函数。而 placement new 跳过第一步,只执行第二步——在你指定的地址上调用构造函数。

典型写法:

char buffer[sizeof(MyClass)];<br>MyClass* obj = new (buffer) MyClass(42); // 在 buffer 起始地址构造对象

登录后复制

必须手动管理生命周期

因为 placement new 没有分配内存,所以不能用 delete 销毁对象——那会尝试释放未由 new 分配的内存,导致未定义行为。

立即学习“C++免费学习笔记(深入)”;

标签: c++

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~