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;
}
相关推荐
y1233447788994 分钟前
国密算法SM2实现(Openssl)
开发语言·openssl·国密
爱上妖精的尾巴7 分钟前
7-16 WPS JS宏 RandBetween、Address实例8--[唯一性]类的应用
开发语言·javascript·wps·js宏·jsa
从此不归路8 分钟前
Qt5 进阶【10】应用架构与插件化设计实战:从「单体窗口」走向「可扩展框架」
开发语言·c++·qt·架构
瓦特what?9 分钟前
C++编程防坑指南(小说版)
android·c++·kotlin
sjjhd65211 分钟前
C++模拟器开发实践
开发语言·c++·算法
曹天骄12 分钟前
Cloudflare CDN 预热全面实战指南(含全球 PoP 解析 + 预热覆盖模型)
运维·开发语言·缓存
Queenie_Charlie15 分钟前
素数(线性筛法)
c++·线性筛法·质数·简单数论
csbysj202015 分钟前
传输对象模式(Object Transfer Pattern)
开发语言
步达硬件16 分钟前
【Matlab】把视频里每一帧存为单独的图片
开发语言·matlab·音视频
莹莹学编程—成长记17 分钟前
TCP/IP五层模型+网络传输基本流程
网络·c++