内存管理--堆
来源:互联网 发布:台风莫兰蒂数据 编辑:程序博客网 时间:2024/05/01 19:07
1.堆的简介
有栈对于面向过程的程序设计还远远不够,因为栈上的数据在函数返回的时候就会被释放掉,所以无法将数据传递至函数外部。而全局变量没有办法动态地产生,只能在编译的时候定义,有很多情况下缺乏表现力。在这种情况下,堆(Heap)是唯一的选择。
堆是一块巨大的内存空间,常常占据整个虚拟空间的绝大部分。在这片空间里,程序可以请求一块连续内存,并自由地使用,这块内存在程序主动放弃之前都会一直保持有效。
2.什么时候创建堆
(1)malloc函数
例:int*p;
p=(int*)malloc(sizeof(int));
使用malloc函数分配内存时,返回值要经过类型转换才可赋予一个指针变量。该函数如分配内存成功,则返回其始地址,否则返回NULL。头文件为#include<stdlib.h>。
(2)new运算符
例:int*p,*q;
p=new int;//申请分配一个int型内存空间
p=new int(10);//申请一个int型空间存放10
q=new int[10];//申请分配10个int型的内存空间
new分配内存时不需要类型转换。用new申请的空间必须要用delete释放。而且指针值不能改变。形式有:delete指针变量名(可释放一个内存单元)、delete[]指针变量名(可释放若干个内存单元)。
3.堆的管理
运行库相当于是向操作系统“批发”了一块较大的堆空间,然后“零售”给程序用。当全部“售完”或程序有大量的内存需求时,再根据实际需求向操作系统“进货”。当然运行库在向程序零售堆空间时,必须管理它批发来的堆空间,不能把同一块地址出售两次,导致地址的冲突。于是运行库需要一个算法来管理堆空间,这个算法就是堆的分配算法。
阅读全文
1 0
- Oracle内存管理:堆
- Jvm堆内存管理
- 内存管理和堆
- C++ 堆内存管理
- 内存管理--堆
- ptmalloc堆内存管理
- JVM内存管理-----堆内存
- JVM内存管理,堆、栈
- jvm堆内存管理有关
- JAVA堆内存设置管理
- FreeRTOS笔记:堆内存管理
- cassandra 堆外内存管理
- 2. FreeRTOS----堆内存管理
- 堆内存管理应用例题
- Java堆外内存管理
- 笔记:JVM内存管理-----堆内存
- jvm内存管理-堆内存分配
- JAVA内存管理之堆内存和栈内存
- PHP进行3des加密
- 从服务器下载mp3文件,保存到MediaStore,提取数据mp3中的信息
- Java注解--四种元注解
- python之正则表达式教程(初级)
- 0828 Web知识初了解
- 内存管理--堆
- 搭建Spring boot基本环境-idea
- linux tomcat启动与端口占用查看
- (AtCoder Grand Contest 019) C
- iOS逆向工具--usbmuxd使用
- Python培训机构学员感悟
- http与Socket区别
- Labview通过RS422通讯接口PC与下位机通信
- Swift 项目中可能用到的第三方框架