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(); }
时间: 2024-10-19 01:20:47