C++定位new(placement new)

C++定位new(placement new)

普通new是在堆上申请一块内存空间,交由用户自己管理
定位new则是在用户已经申请好的一块空间重复使用,这个空间可以是栈上的也可以是堆上的
1、若是在堆上使用定位new,那么还是需要用户对内存自行管理,避免内存泄漏
2、若是在栈上使用定位new,则无需用户进行管理,系统会对栈上空间自动回收

格式

char buffer[1024]={0};
new (pointer) Type(arguments);// char *p = new(buffer)char[10];
*

cpp 复制代码
#include<iostream>
#include<Windows.h>
using namespace std;

int main()
{
	char t_str_buffer[1024] = {0};
	char*p = new(t_str_buffer)char[10];
	char*p1 = new(t_str_buffer+10)char[10];
	cout<<(void*)t_str_buffer<<endl<<(void*)p<<endl<<(void*)p1<<endl;
	cout<<"----------------------------"<<endl;

	char *t_str_newbuffer = new char[1024];
	char*p2 = new(t_str_newbuffer)char[10];
	cout<<(void*)t_str_newbuffer<<endl<<(void*)p2<<endl;
	return 0;
}
相关推荐
姓蔡小朋友2 小时前
LUA脚本
开发语言·junit·lua
liulilittle3 小时前
OPENPPP2 Code Analysis Two
网络·c++·网络协议·信息与通信·通信
悟能不能悟3 小时前
Java CheckFailedException会去获取message.properties的内容吗
java·开发语言
shang_xs3 小时前
Java 25 ScopedValue - 作用域内安全访问的一种实现
java·开发语言·安全
向量引擎3 小时前
[架构师级] 压榨GPT-5.2与Sora 2的极限性能:从单体调用到高并发多模态Agent集群的演进之路(附全套Python源码与性能调优方案)
开发语言·人工智能·python·gpt·ai·ai写作·api调用
小白学大数据3 小时前
Java 异步爬虫高效获取小红书短视频内容
java·开发语言·爬虫·python·音视频
solar应急响应3 小时前
域控宕机!如何强制夺取五大角色恢复业务?
开发语言·php
数据的世界013 小时前
C# 获评2025年度编程语言-编程语言排行榜2026年1月
开发语言
2201_757830873 小时前
Bean原理篇
java·开发语言
草原上唱山歌3 小时前
推荐学习的C++书籍
开发语言·c++·学习