C++ new限定区域分配内存

本文详细介绍了C++中从指定区域分配内存的方法,包括使用new关键字在堆区分配和利用静态区域分配数据,同时探讨了手动与自动内存释放策略以避免内存泄漏。
部署运行你感兴趣的模型镜像

C++中从指定区域分配内存:

#include<iostream>
using namespace std;

const int buf(1024);
char buffer[buf]={0}; //开辟静态区域
 
//p1,p3作为指针变量在栈区,存储的地址指向堆区
//手动释放内存

//p2,p4作为指针变量在栈区,存储的地址指向静态区
//自动释放内存,用于分配用完了就不会再用的数据
//避免内存泄漏,自动释放内存。牺牲了内存访问独立性,
//从程序输出结果可以看出p2 和p4的地址相同的
void main()
{
	int len=5;
	int *p1,*p2,*p3,*p4;

	p1=new int[len];
	p2= new (buffer)int[len];
	
	p3=new int[len];
	p4= new (buffer)int[len];//用指定的区域去分配,从buffer首地址开始分配
	cout<<"buffer:"<<&buffer<<endl;
	for(int i=0;i<len;i++)
	{
		*(p1+i)=i+1;
		*(p2+i)=i+2;
		cout<<"p1:"<<(p1+i)<<"  "<<*(p1+i)<<"  p2:"<<(p2+i)<<" "<<*(p2+i)<<endl;

	}
	cout<<endl<<endl;
	for(int i=0;i<len;i++)
	{
		*(p3+i)=i+1;
		*(p4+i)=i+2;
		cout<<"p3:"<<(p3+i)<<"  "<<*(p3+i)<< "  p4:"<<(p4+i)<<" "<<*(p4+i)<<endl;
	}

	delete p1;
	delete p3;
	cin.get();
}


您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值