当前位置: 首页 > article >正文

C++中placement new的用法

使用placement new可以在指定的已经申请好的内存位置创建实例,这样就可以不用重新申请内存,而只是调用构造函数就可以,这个内存位置甚至可以是在栈上,一般会在进程间通信的共享内存方案中使用。

示例一

//main.cpp

#include<iostream>
#include<malloc.h>

class Demo
{
public:
	Demo() = default;
	~Demo() = default;

private:
	int m_data;
};

int main()
{
	auto buf = malloc(1024);
	memset(buf, 0, 1024);

	auto demo = new (buf) Demo;
	//delete demo;
	demo->~Demo();
	//注意不要调delete释放,显式调用析构释放就可以了,试一下就知道是为啥了

	free(buf);//提醒一下这里析构不会自动调的

	return 0;
}

示例二

//main.cpp

#include<iostream>
#include<malloc.h>

class Demo
{
public:
	Demo() = default;
	~Demo() = default;

private:
	int m_data;
};

int main()
{
	char buf[16] = { 0 };

	auto demo = new (buf) Demo;
	//delete demo;
	demo->~Demo();
	//注意不要调delete释放,显式调用析构释放就可以了,提醒一下这里析构不会自动调的(虽然是在栈上)

	return 0;
}

http://www.kler.cn/news/357500.html

相关文章:

  • 电子商务网站维护技巧:保持WordPress、主题和插件的更新
  • 客户案例 | Ansys与台积电和微软合作加速光子仿真
  • 使用函数制作一个简易的计算机
  • 生成 Excel 表列名称
  • 神经网络量化基础
  • C05.L01.插入与冒泡排序.冒泡排序
  • 太无敌!时序卷积组合Transformer!TCN-Transformer多变量回归预测
  • 【Nginx系列】Nginx配置超时时间
  • Axure重要元件三——中继器添加数据
  • 【微服务】精细化微服务日志管理:构建高效的监控与故障排查体系
  • JVM(HotSpot):直接内存及其使用建议
  • RISC-V笔记——重叠地址排序
  • |信息爬取与分析|009_django基于Python的耳机信息的爬取与分析2024_2qdh1wz4
  • CentOS 上安装 MySQL(附卸载教程)
  • 券商api怎么获取,如何获取券商API接口?
  • Android便携式WLAN热点分析
  • 2025考研各省网上确认时间汇总!(别忘记)
  • Kubernetes部署练习
  • JS实现一维时间轴动画
  • Nginx超简洁知识:负载均衡-反向代理,动静分离,配置文件