浅谈linux下malloc函数的内存管理
来源:互联网 发布:xcon支持哪些软件 编辑:程序博客网 时间:2024/05/18 03:11
浅谈linux下malloc函数的内存管理
-----------本文章属于一个初学linux菜鸟的心得,若有哪里不对希望看到这篇文章的大牛予以指出,必不胜感激。
我们都知道在c语言中有一个用于在堆中开辟空间的函数malloc,那么在linux下malloc又是怎样工作的呢,下面就让小菜给大家谈一谈我的一些心得.
事实上malloc函数在开辟空间时,在linux系统中是通过一个类似于链表的数据结构来维护的,这个数据结构主要包括四个部分: 1、本空间部分 2、维护上一个空间部分 3、维护下一个空间部分 4、存放本空间大小的部分 。大家看下面一个例子吧:
有一个这样的程序:
int *p = (int *)malloc(4);
*p = 1;
*(p+1) = 2;
*(p+2) = 3;
大家可能会觉得这个程序会报错,但事实上在linux下这个程序并不会报错,原因正是像刚才所说的,事实上malloc开辟空间时不仅开辟了自己的空间1,系统在维护时使用的数据结构还有像上面所说的2,3,4的部分,所以刚刚的例子不会发生编译错误,但事实上它破坏了维护结构中的数据。也使得malloc不能正常工作,所以这时加入你再添加一句
free(p)
就会出问题了,因为你已经把结构破坏了,释放空间时就会发生错误。
- 浅谈linux下malloc函数的内存管理
- 浅谈Unix/linux下的内存管理
- Linux下进程内存管理之malloc和sbrk
- linux内存管理之malloc
- linux内存管理之malloc
- linux内存管理之malloc
- linux 内存管理浅谈
- 浅谈Linux内存管理
- 浅谈linux内存管理
- 浅谈linux内存管理
- 浅谈linux内存管理
- 内存管理函数HeapAlloc,LocalAlloc,VirtualAlloc,malloc,new的异同
- 内存管理函数HeapAlloc,LocalAlloc,VirtualAlloc,malloc,new的异同
- linux内存管理之malloc、vmalloc、kmalloc的区别
- linux内存管理之malloc、vmalloc、kmalloc的区别
- linux下的管理内存相关的函数
- 单片机(不基于os)下如何实现简单的内存管理(malloc,realloc和free函数的重新实现)
- 单片机(不基于os)下如何实现简单的内存管理(malloc,realloc和free函数的重新实现)
- 常用Eclipse插件
- javascript之正则表达式(一)
- MyEclipse设置全局编码
- 发布一款新的Cortex A8 S5pv210 金手指核心板Sate210-F(附上硬件用户手册说明书)用于低价DIY活动
- 倒车轨迹理论实现方法
- 浅谈linux下malloc函数的内存管理
- ElasticSearch的shard迁移
- javascript 全类型检查type.js
- VMware虚拟机+Linux网络设置之NAT
- VMware中使用NAT网络在虚拟机Linux上联网
- 黑马程序员_毕向东_Java基础视频教程学习笔记(十四)
- linux QQ
- tomcat6连接池出现Cannot create JDBC driver of class '' for connect URL 'null'
- setInterval()和setTimeout()的用法和区别