new 高级用法
1 /* new 高级用法 */
2
3 #include<iostream>
4 #include<new>
5
6 const int buf(512);// 限定一个常量整数
7 int N(5);// 数组的长度
8 char buffer[buf] = {0};// 静态区
9
10 using namespace std;
11
12 // p1,p3,p5 作为指针变量在栈区 存储的地址指向堆区 手动释放内存
13
14 // p2,p4,p6 作为指针变量在栈区 存储的地址在静态区 自动释放内存 缓冲区
15 // 避免内存泄露 牺牲了内存访问独立性 用于分配用完了就不会再用的数据
16
17 void main()
18 {
19 double *p1,*p2;
20
21 std::cout << "\n\n";
22 p1 = new double[N];// 分配内存,N个元素大小
23 p2 = new (buffer)double[N];// 指定区域分配内存
24
25 for (int i=0;i<N ;i++ )
26 {
27 p1[i] = p2[i] = i + 10.8;// 对数组初始化
28 std::cout << "p1= " << &p1[i] << " " << p1[i] << endl;
29 std::cout << "p2= " << &p2[i] << " " << p2[i] << endl;
30 }
31
32 double *p3,*p4;
33 std::cout << "\n\n";
34 p3 = new double[N];// 分配内存,N个元素大小
35 p4 = new (buffer)double[N];// 指定区域分配内存
36
37 for (int i=0;i<N ;i++ )
38 {
39 p3[i] = p4[i] = i + 10.8;// 对数组初始化
40 std::cout << "p3= " << &p3[i] << " " << p3[i] << endl;
41 std::cout << "p4= " << &p4[i] << " " << p4[i] << endl;
42 }
43
44 double *p5,*p6;
45 std::cout << "\n\n";
46 p5 = new double[N];// 分配内存,N个元素大小
47 p6 = new (buffer)double[N];// 指定区域分配内存
48
49 for (int i=0;i<N ;i++ )
50 {
51 p5[i] = p6[i] = i + 10.8;// 对数组初始化
52 std::cout << "p3= " << &p5[i] << " " << p5[i] << endl;
53 std::cout << "p4= " << &p6[i] << " " << p6[i] << endl;
54 }
55
56 std::cin.get();
57 }
长风破浪会有时,直挂云帆济沧海
posted on 2015-06-01 14:24 Dragon-wuxl 阅读(197) 评论(0) 收藏 举报
浙公网安备 33010602011771号