2013年3月5日

浅析malloc & free工作原理

摘要: 平时我们在码程序的时候,经常会遇到要动态申请内存,申请之后当然要记得释放,我们用的最多的当然就是malloc(申请)/free(释放),现在来简单分析一下其基本工作原理:图1 到 图8 给出了 malloc & free 的基于链表简单实现图1图2图3图4图5图6图7图8图中白色背景的框表示malloc管理的空闲内存块,深灰色背景的框不归malloc管,可能是已分配给用户的内存块,也可能是不属于当前进程;break之上的地址不属于当前进程,需要通过brk系统调用向内核申请。每个内存块都有一个头节点,里面有一个指针字段和一个长度字段,指针字段把所有空闲块的头节点串在一起,组成一个环形链表 阅读全文

posted @ 2013-03-05 15:28 DJYang 阅读(924) 评论(1) 推荐(2) 编辑

动态库的生成和使用方法

摘要: linux 中的动态库又叫共享对象库:Shared Object Library,就是我们看到的 *.so(shared object) 文件,又名动态连接库: Dynamic Linked Library; 创建共享库: 1)写源程序 myku.h business.c view.c 2)编译 gcc -fpic -c business.c==>business.o gcc -fpic -c view.c ==>view.o 3)生成共享库文件 gcc -shared business.o view.o -olibmyku.so 2,3一次完成: gcc -fpic -share 阅读全文

posted @ 2013-03-05 09:31 DJYang 阅读(453) 评论(0) 推荐(0) 编辑

静态库的生成和使用方法

摘要: 1)写源程序,包括写头文件 myku.h business.c view.c 2)编译生成xxx.o文件 gcc -c business.c ==> business.o gcc -c view.c ==> view.o 3)将xxx.o打包成档案文件,此档案文件就是静态库文件 ar -r libmyku.a business.o view.o==> libmyku.a 使用静态库文件的方式: 1)写源程序 use.c 2)编译 gcc -c use.c ==> use.o 3)连接 第一种方式:gcc use.o libmyku.a ==> a.out第二种连接 阅读全文

posted @ 2013-03-05 09:25 DJYang 阅读(594) 评论(0) 推荐(1) 编辑

导航