C++ placement new使用

placement new重载来原来的operator new,且placement new不能被即需重载

placement new是在原有的一块地址上继续创建一个对象,注意对象类型要一致,这样的操作的优势有两个:

1、不用花时间在找合适的空间存放新对象,减少了性能以及时间开销

2、在同一块地址生成对象,则不会另开辟空间,减少了空间开销

placement new在对时间要求特别高的时候,会经常使用

使用:

复制代码
#include "iostream"

using namespace std;

class PlaceMent {
public:
	PlaceMent(int out_value) : value(out_value) {}
	void PrintValue() {
		cout << value << endl;
	}
	~PlaceMent() {
		cout << "des" << endl;
	}
private:
	int value;
};

int main() {
	PlaceMent* rat = new PlaceMent(13);
	rat->PrintValue();
	PlaceMent* place = new(rat) PlaceMent(10);
	rat->PrintValue();
	place->PrintValue();
	int x = 100;
	cout << x << endl;
	int* mem = new(&x) int(2);
	cout << x << endl;
	cout << *mem << endl;
	place->~PlaceMent();

	return 0;
}

placement new出来的对象需要销毁则调用其析构函数即可

相关推荐
进击的小头1 分钟前
第6篇:贝尔曼最优化理论
python·算法·动态规划
EQUINOX17 分钟前
bitset + meet in the middle,P3067 [USACO12OPEN] Balanced Cow Subsets G
算法
昨日余光18 分钟前
建议收藏!我开发了一个免费无限制的AI绘画公益站!
开发语言·前端·javascript·ai作画·typescript
四处炼丹19 分钟前
OpenClaw本地部署与Multi-Agent 技术分享
人工智能·算法·aigc·agent·ai编程
ZHOUPUYU21 分钟前
我在PHP里学到的“套路”与“反套路” 设计模式与依赖注入
开发语言·php
吃不饱的得可可21 分钟前
【三方库】jsoncpp
c++·json
马士兵教育25 分钟前
2026年IT行业基本预测!计算机专业学生就业编程语言Java/C/C++/Python该如何选择?
java·开发语言·c++·人工智能·python·面试·职场和发展
Σίσυφος190026 分钟前
周期 Pattern Removal 算法
算法
飞Link29 分钟前
深度捕捉时序本质:TSTD 异常检测之表示学习(Representation-based)全解析
学习·算法·数据挖掘·回归
滴滴答滴答答38 分钟前
机考刷题之 10 LeetCode 200 岛屿数量
算法·leetcode·职场和发展