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();
}原文地址:http://blog.csdn.net/huangshanchun/article/details/45623609