<pre name="code" class="cpp">#include<iostream>
#include<cstdlib>
using namespace std;
//char str[1024] = { 0 }; //内存静态区
//静态区,栈区,堆区
//int *p2 = new (str)int[10]{1,2,3,4,5,6,7,8,9,10}; 分配内存,以str地址为开始
//堆区,可以覆盖重写 可以删除
//栈区,静态区,可以覆盖重写,不可以删除
void main()
{
//char str[1024] = { 0 };
char *str = new char[1024]{0};
int *p1 = new int[10]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *p2 = new (str) int[10]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//从下面的打印的数据来看,p1 每次都是重新分配的地址,而p2每次使用的都是相同的地址。
//这片地址被反复使用。new (str) int[10] 即每次都是使用以str为开始的这块地址。
for (int i = 0; i < 10; i++)
{
cout << p1[i] << " " << p1+i << " " << p2[i] << " " << p2+i << endl;
}
cout << endl;
free(str);
for (int i = 0; i < 10; i++)
{
cout << p1[i] << " " << p1 + i << " " << p2[i] << " " << p2 + i << endl;
}
cout << endl;
/*for (int i = 0; i < 10; i++)
{
cout << p1[i] << " " << p1 + i << " " << p2[i] << " " << p2 + i << endl;
}
cout << endl;
for (int i = 0; i < 10; i++)
{
cout << p1[i] << " " << p1 + i << " " << p2[i] << " " << p2 + i << endl;
}
cout << endl;*/
cin.get();
}
还没有评论,来说两句吧...