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;
}
相关推荐
CC.GG3 分钟前
【Qt】常用控件----按钮类控件
开发语言·数据库·qt
梨落秋霜3 分钟前
Python入门篇【序列切片】
开发语言·python
小北方城市网6 分钟前
第 6 课:全栈项目性能 & 安全双进阶 ——Redis 缓存 + JWT 认证(打造高并发高安全后端)
开发语言·数据库·redis·python·安全·缓存·数据库架构
..过云雨11 分钟前
计算机网络核心概述:网络通信协议及传输流程深度解析
linux·c++·网络协议·tcp/ip·计算机网络
flysh0512 分钟前
C# 核心进阶:深度解析继承(Inheritance)与多态机制
开发语言·c#
kylezhao201919 分钟前
第二节、C# 上位机核心数据类型详解(工控场景实战版)
开发语言·c#·上位机
qq_3930604721 分钟前
公x课视频播放
开发语言·python·音视频
hetao173383724 分钟前
2026-01-03 水水的省选模拟赛 Day 1 hetao1733837 的刷题记录
c++·笔记·算法
千里马-horse25 分钟前
Rect Native bridging 源码分析--Array.h
javascript·c++·react native·react.js·bridging
好想写博客25 分钟前
[动态规划]斐波那契数列
c++·算法·leetcode·动态规划