C++ 如何重复利用一个内存地址块
时间:2022-05-06
本文章向大家介绍C++ 如何重复利用一个内存地址块,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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
这样,可以对内存进行很好的利用,避免内存泄露。而导致系统运行越来越慢!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【软件测试】面试中问到Linux命令,你都答上来了吗?【送书】
- Linux用户自定义at、cron计划任务执行的方法
- Linux下Oracle设置定时任务备份数据库的教程
- centos8 使用yum 安装 rabbitmq的教程
- linux exa命令(比ls更好的展示文件体验)
- 浅谈linux kernel对于浮点运算的支持
- PyTorch版YOLOv4更新了,不仅适用于自定义数据集,还集成了注意力和MobileNet
- Apache shiro的简单介绍与使用教程(与spring整合使用)
- Linux中一种友好的find替代工具(fd命令)
- ubuntu下让python脚本可直接运行的实现方法
- 在linux (centos)上使用puppeteer实现网页截图功能
- centOS7.4 安装 mysql 5.7.26的教程详解
- linux最快的文本搜索神器ripgrep(grep的最好代替者)
- Ubuntu安装MySQL5.7并配置数据存储路径的方法步骤
- 在centos7上搭建mysql主从服务器的方法(图文教程)