malloc free 深入学习
来源:互联网 发布:西数 mac ntfs 插件 编辑:程序博客网 时间:2024/06/14 19:15
#include <stdio.h>#include <stdlib.h>int main(){ int * iptr = (int *)malloc(10 * sizeof(int)); for(int i = 0; i < 10; ++i){ iptr[i] = i * 1000; } printf("%p\n",iptr); iptr = iptr + 3; printf("%p\n",iptr); free(iptr); return 0;}
上面的代码在LINUX下运行会出错,因为free(iptr),Linux下,用malloc等函数在堆上申请一块内存,系统实际标记的,是大于所申请的内存大小,但我们能使用的,还是所申请的大小。堆管理程序会分配内存块,并将这块内存前4个或8个字节,用以记录本次申请的内存大小,如下图
malloc返回指向绿色区域的指针,这就是我们所申请的n个字节的内存块,实际上,在这块内存的前面4个或8个字节,记录着分配的内存的大小,(>所申请的内存字节),所以,在调用free函数的时候,它会读取前面4个或8个字节。上面的程序,改变了指针的指向,它前面的4个或8个字节,变成了被赋值的数据,在调用free的时候,会将前面的某个数据做为记录的内存块大小去释放,所以会出错。但是在widnows下不会出错,可能是因为内存管理机制不同吧。
- malloc free 深入学习
- 深入理解malloc和free
- malloc和free函数学习
- malloc()与free()学习笔记
- 深入C++ new/delete,malloc/free 总结
- 深入C++ new/delete,malloc/free解析
- malloc 和free的深入了解
- malloc/free
- malloc/free
- malloc/free
- malloc,free
- malloc & free
- malloc & free
- malloc free
- malloc/free
- C语言中malloc()和free()深入分析
- C语言中malloc()和free()深入分析
- C语言中,malloc和free深入理解
- 【转载】不一会就做好了的freeeim
- 【转载】因为只有想要通讯
- Wuawua知识管理 -- PHP推荐书籍
- Wuawua知识管理 -- Python推荐书籍
- HTTP中GET和POST的区别
- malloc free 深入学习
- Java的ClassLoader机制解析
- Latex 样例
- Keil中 Code, RO-data RW-data,ZI-data
- c#中的命名空间
- Integer.parseInt(String)与Integer.valueOf(String)的区别
- 2.6.32内核sendfile的两个bug
- 八款JS框架介绍及比较
- javabean总结