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;
}
相关推荐
Matlab光学17 分钟前
MATLAB仿真:离轴干涉法实现光学全息加密与解密
开发语言·matlab
小鸡吃米…27 分钟前
Python - JSON
开发语言·python·json
JAVA+C语言31 分钟前
C#——接口
开发语言·c#
黎雁·泠崖32 分钟前
吃透指针通用用法:回调函数与 qsort 的使用和模拟
c语言·开发语言
whn197732 分钟前
达梦数据库的整体负载变化查看
java·开发语言·数据库
脏脏a34 分钟前
聊聊 C 里的进制转换、移位操作与算术转换
c语言·开发语言·移位操作符
陳103037 分钟前
C++:string(4)
开发语言·c++
ZHang......38 分钟前
synchronized(三)
开发语言·笔记·juc
许泽宇的技术分享39 分钟前
AgentFramework:错误处理策略
开发语言·c#
阿里嘎多学长1 小时前
2025-12-21 GitHub 热点项目精选
开发语言·程序员·github·代码托管