C++定位new(placement new)

C++定位new(placement new)

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

格式

char buffer1024={0};
new (pointer) Type(arguments);// char *p = new(buffer)char10;
*

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;
}
相关推荐
总有刁民想爱朕ha18 分钟前
Python PyQt5图片批量转MP4视频工具:本地离线免费无水印,完整代码
开发语言·python·qt
宸津-代码粉碎机37 分钟前
FastUtil+AI多Agent实战:Java AI项目性能终极加速方案
java·服务器·开发语言·python·安全·php
_Narcissus_41 分钟前
二分算法笔记及例题
数据结构·c++·笔记·算法·蓝桥杯·查找·二分算法
Python私教1 小时前
Python 3.15 来了:free-threading 稳定 ABI 能给高并发服务带来什么
开发语言·python
Logintern092 小时前
[Matlab] 遗传算法求解TSP入门
开发语言·matlab
练习时长两年半的RL练习生3 小时前
与AI对话后对 Actor-Critic 中 TD Target 的 a‘ 来源总结
开发语言·人工智能·php
青少儿编程课堂3 小时前
用图形化编程做一个“少年探险闯关”小游戏:方向键控制、碰撞检测与多关卡串起完整项目
c++·python·算法·bfs·信息学竞赛
liulilittle3 小时前
长上下文的成本结构与「甜点区间」——从推理引擎的物理约束看 200K/256K/400K
c++·人工智能·ai·llm·注意力·qkv
十五年专注C++开发3 小时前
100w条数据丝滑滚动!Qt Model/View 架构实战(二)
开发语言·c++·qt
萧瑟余晖4 小时前
Java深入解析篇三十九之集成测试
java·开发语言·集成测试