C++高级编程 第十三章: 有效的内存管理
来源:互联网 发布:mac卸载 landesk 编辑:程序博客网 时间:2024/06/07 12:30
这一章其实也就讲了一下内存的具体情况,我觉得一般般,不是很深入,都是些表面
1.如何描述内存
我们通常描述一个指针,都是说它指向一个内存.但是其实, 指针本身就是在栈里面而已
栈 ————————————堆
ptr————————————*ptr
这个是什么意思呢,就是指针只是一个变量而已,它既可以存在于栈中,也可以存在于堆中.
栈: int *ptr = new int;
堆: int *ptr; *ptr=new int; ptr= new int;
多数我们定义栈的指针, 我们只是让这个栈里面的指针指向堆里面的内容而已
2. new和malloc的区别
new的话,除了分配合适大小的内存外, 还会调用该对象的默认构造函数, 并且成功后返回一个指向该内存的指针.在new失败的同时,会抛出一个异常
malloc的话, 就只会分配固定大小的内存.
相对应的:
delete的话会自动调用该对象的析构函数.
free的话 什么只是清理该内存而已.!!!
3.”构造”动态数组 and “析构”动态数组
我们在栈内构造数组通常这样
int array[10];//
int array[10][10];//
相对应 在堆内
int *array = new int[5];//13
但是二维的时候,1因为申请的内存不是连续的,所以不能用int **array = new int[10][10]
所以我们必须先申请第一维的数组长度, 然后再从第一维里面的每个元素里面申请第二维的数组长度.
int **array = new int[10];for(int i=0;i<10;i++){ array[i] = new int[10];//}
2
阅读全文
0 0
- C++高级编程 第十三章: 有效的内存管理
- 《C++高级编程》--有效的内存管理
- 《C++高级编程》之--有效的内存管理
- Windows编程基础 第十三章 windows内存管理
- 《Linux内核编程》第十三章:Linux对进程内存的二级页式管理
- Objective-C高级编程--多线程和内存管理笔记
- 【Objective-C高级编程】iOS与OS X多线程和内存管理(四) Block的实现
- C高级(4)--内存管理
- 内存管理原理----《Objective-C高级编程:iOS与OS X多线程和内存管理》读书笔记
- iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
- iphone(object-c) 内存管理(3) 有效的内存管理 后半部分
- 《Objective-C高级编程 iOS与OS X多线程和内存管理》学习笔记——第二章Blocks
- 《c++高级编程》笔记--内存管理
- linux高级编程01 内存管理
- [Linux高级编程]内存管理&映射&分配
- 【Object - c 高级】01 内存管理 MRC
- Objective-C 高级编程:iOS与OS X多线程和内存管理
- Objective-C 高级编程:iOS与OS X多线程和内存管理
- rails之自定义Rake任务
- VB文件系统编程中的input/line input,print和write语句相同点和区别
- 开放式授权OAuth
- 希尔排序
- 设计模式【传输对象模式TransferObjectPattern】
- C++高级编程 第十三章: 有效的内存管理
- 位运算
- iOS老铁,是时候干掉 iOS8 了!
- Java集合之ConcurrentHashMap源码浅析
- 贪心算法-4.6.1最小生成树之Prim算法(切分定理)
- codeforces 118A String Task
- 利用caffe的Python接口生成prototxt文件
- KVM虚拟机启动和异常处理示意图
- Galaxy S8及S+全屏显示适配