前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 如何重复利用一个内存地址块

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

作者头像
Gxjun
发布2018-03-26 16:57:04
9230
发布2018-03-26 16:57:04
举报
文章被收录于专栏:ml
代码语言:javascript
复制
 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 }
代码语言:javascript
复制
 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   

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-03-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档