码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 如何重复利用一个内存地址块

时间:2015-03-30 12:49:31      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

 1 #include<iostream>
 2 using namespace std;
 3 const int size = 10;
 4 double buf[size] = {0};
 5 
 6 int main(int argv ,char * args[]) {
 7     
 8     double *p1,*p2;
 9      p1 = new double[size];
10      p2 = new (buf)double[size];
11      for (int i = 0; i < size; i++) {
12          p1[i]=p2[(i+2)%size]=i+2;
13          cout << "p1== " << &p1[i] << "    p1[i]=="<<p1[i]<<"   "<< endl;
14      }
15      cout << "---------------华丽丽的分割线-----------------------" << endl;
16      for (int i = 0; i < size; i++) {
17          cout << "p2== " << &p2[i] << "    p2[i]==" << p2[i] << "   " << endl;
18      }
19      cout << "---------------一大波内存袭来!-----------------------" << endl;
20      double *p3, *p4;
21      p3 = new double[size];
22      p4 = new (buf)double[size];
23      for (int i = 0; i < size; i++) {
24          p3[i] = p4[(i + 2) % size] = i + 2;
25          cout << "p3== " << &p3[i] << "    p3[i]==" << p3[i] << "   " << endl;
26      }
27      cout << "---------------华丽丽的分割线-----------------------" << endl;
28      for (int i = 0; i < size; i++) {
29          cout << "p4== " << &p4[i] << "    p4[i]==" << p4[i] << "   " << endl;
30      }
31      cout << "###################华丽丽的分割线########################" << endl;
32      //数组指针
33      double *p[] = {p1,p2,p3,p4};
34      for (int i = 0; i < 4; i++)
35          for (int j = 0; j < size; j++) {
36              cout << "p["<<i<<"]== " << &p[i][j] << "    p["<<i<<"]"<<"["<<j<<"]==" << p[i][j] << "   " << endl;
37          }
38     
39      for (int i = 0; i < 4; i++) {
40           //释放new创建的内存
41          if (p[i]!=buf)  delete [] p[i] ;
42      }
43      cout << "内存释放之后" << endl;
44      for (int i = 0; i < size; i++) {
45         
46          cout << "p1== " << &p1[i] << "    p1[i]==" << p1[i] << "   " << endl;
47      }
48      cin.get();
49     return 0;
50 }
 1 p1== 0038DC28    p1[i]==2   
 2 p1== 0038DC30    p1[i]==3   
 3 p1== 0038DC38    p1[i]==4   
 4 p1== 0038DC40    p1[i]==5   
 5 p1== 0038DC48    p1[i]==6   
 6 p1== 0038DC50    p1[i]==7   
 7 p1== 0038DC58    p1[i]==8   
 8 p1== 0038DC60    p1[i]==9   
 9 p1== 0038DC68    p1[i]==10   
10 p1== 0038DC70    p1[i]==11   
11 ---------------华丽丽的分割线-----------------------
12 p2== 0125C2D0    p2[i]==10   
13 p2== 0125C2D8    p2[i]==11   
14 p2== 0125C2E0    p2[i]==2   
15 p2== 0125C2E8    p2[i]==3   
16 p2== 0125C2F0    p2[i]==4   
17 p2== 0125C2F8    p2[i]==5   
18 p2== 0125C300    p2[i]==6   
19 p2== 0125C308    p2[i]==7   
20 p2== 0125C310    p2[i]==8   
21 p2== 0125C318    p2[i]==9   
22 ---------------一大波内存袭来!-----------------------
23 p3== 0038B1F8    p3[i]==2   
24 p3== 0038B200    p3[i]==3   
25 p3== 0038B208    p3[i]==4   
26 p3== 0038B210    p3[i]==5   
27 p3== 0038B218    p3[i]==6   
28 p3== 0038B220    p3[i]==7   
29 p3== 0038B228    p3[i]==8   
30 p3== 0038B230    p3[i]==9   
31 p3== 0038B238    p3[i]==10   
32 p3== 0038B240    p3[i]==11   
33 ---------------华丽丽的分割线-----------------------
34 p4== 0125C2D0    p4[i]==10   
35 p4== 0125C2D8    p4[i]==11   
36 p4== 0125C2E0    p4[i]==2   
37 p4== 0125C2E8    p4[i]==3   
38 p4== 0125C2F0    p4[i]==4   
39 p4== 0125C2F8    p4[i]==5   
40 p4== 0125C300    p4[i]==6   
41 p4== 0125C308    p4[i]==7   
42 p4== 0125C310    p4[i]==8   
43 p4== 0125C318    p4[i]==9   
44 ###################华丽丽的分割线########################
45 p[0]== 0038DC28    p[0][0]==2   
46 p[0]== 0038DC30    p[0][1]==3   
47 p[0]== 0038DC38    p[0][2]==4   
48 p[0]== 0038DC40    p[0][3]==5   
49 p[0]== 0038DC48    p[0][4]==6   
50 p[0]== 0038DC50    p[0][5]==7   
51 p[0]== 0038DC58    p[0][6]==8   
52 p[0]== 0038DC60    p[0][7]==9   
53 p[0]== 0038DC68    p[0][8]==10   
54 p[0]== 0038DC70    p[0][9]==11   
55 p[1]== 0125C2D0    p[1][0]==10   
56 p[1]== 0125C2D8    p[1][1]==11   
57 p[1]== 0125C2E0    p[1][2]==2   
58 p[1]== 0125C2E8    p[1][3]==3   
59 p[1]== 0125C2F0    p[1][4]==4   
60 p[1]== 0125C2F8    p[1][5]==5   
61 p[1]== 0125C300    p[1][6]==6   
62 p[1]== 0125C308    p[1][7]==7   
63 p[1]== 0125C310    p[1][8]==8   
64 p[1]== 0125C318    p[1][9]==9   
65 p[2]== 0038B1F8    p[2][0]==2   
66 p[2]== 0038B200    p[2][1]==3   
67 p[2]== 0038B208    p[2][2]==4   
68 p[2]== 0038B210    p[2][3]==5   
69 p[2]== 0038B218    p[2][4]==6   
70 p[2]== 0038B220    p[2][5]==7   
71 p[2]== 0038B228    p[2][6]==8   
72 p[2]== 0038B230    p[2][7]==9   
73 p[2]== 0038B238    p[2][8]==10   
74 p[2]== 0038B240    p[2][9]==11   
75 p[3]== 0125C2D0    p[3][0]==10   
76 p[3]== 0125C2D8    p[3][1]==11   
77 p[3]== 0125C2E0    p[3][2]==2   
78 p[3]== 0125C2E8    p[3][3]==3   
79 p[3]== 0125C2F0    p[3][4]==4   
80 p[3]== 0125C2F8    p[3][5]==5   
81 p[3]== 0125C300    p[3][6]==6   
82 p[3]== 0125C308    p[3][7]==7   
83 p[3]== 0125C310    p[3][8]==8   
84 p[3]== 0125C318    p[3][9]==9   
85 内存释放之后
86 p1== 0038DC28    p1[i]==-1.45682e+144   
87 p1== 0038DC30    p1[i]==-1.45682e+144   
88 p1== 0038DC38    p1[i]==-1.45682e+144   
89 p1== 0038DC40    p1[i]==-1.45682e+144   
90 p1== 0038DC48    p1[i]==-1.45682e+144   
91 p1== 0038DC50    p1[i]==-1.45682e+144   
92 p1== 0038DC58    p1[i]==-1.45682e+144   
93 p1== 0038DC60    p1[i]==-1.45682e+144   
94 p1== 0038DC68    p1[i]==-1.45682e+144   
95 p1== 0038DC70    p1[i]==-1.45682e+144   

这样,可以对内存进行很好的利用,避免内存泄露。而导致系统运行越来越慢!

C++ 如何重复利用一个内存地址块

标签:

原文地址:http://www.cnblogs.com/gongxijun/p/4377590.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!