![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
文章平均质量分 59
George_Don
这个作者很懒,什么都没留下…
展开
-
C语言培训总结
本该上周末写的总结,反而拖到了现在,发现主要原因是拖延症和干事目的性不强。以后会坚持每两天至少一篇blog的速度总结最近工作、学习、看书的东西。培训的时候时间、任务重,但总体来说是比较轻松的,明白了自己还有的不足以及编码时的优势。现在把听课时候的一些知识点分列在下面。1. 在内存使用的时候要注意三点a.它在哪(栈、堆、全局) b.多大 c何时何地释放2. 指针为形参时,原创 2015-12-29 00:15:36 · 639 阅读 · 0 评论 -
内存分配器三
已经实现了自己的malloc函数Imalloc,但是内存管理还是需要calloc,free,relloc函数来管理内存: calloc:在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针,并将内存空间置0,在32位机上是4bytes一个内存块大小;如果分配不成功,返回NULL。 void *Icalloc(size_t number,size_t size){原创 2016-01-14 19:22:45 · 389 阅读 · 0 评论 -
内存分配器二
虽然在IMalloc.c实现了内存申请的工作,但是这比实际中malloc函数的功能差了很多。必须要将堆中申请的内存管理起来,才能更好地实现malloc函数以及后面的free和realloc函数。 本节内容主要介绍完整实现malloc的功能,可以用于内存块管理。 需要给每个内存块添加额外的信息(meta-data):内存块的大小,下一个内存块的地址,当前内存块是否可用。meta-data应该在ma原创 2016-01-13 17:07:38 · 399 阅读 · 0 评论 -
内存分配器一
glibc内存管理学习 http://www.cnblogs.com/tianchi/archive/2012/08/02/2620634.html x86平台Linux进程内存布局: text:ELF格式程序代码 data:程序运行时就能确定的数据,可读可写 bss:没有初始化的全局变量和静态表里 heap stack:由编译器自动分配释放,存放函数参数、局部变量等 Mmap:映射原创 2016-01-12 22:08:55 · 389 阅读 · 0 评论 -
ptmalloc源码阅读-malloc_chunk
内存管理不外乎三个层面,用户管理层,C运行时库层,操作系统层 目前轮子处于运行时库层,制作这个轮子的目的是为了了解底层内存分配是如何实现的,后面肯定主要是实现用户管理层。 常见C内存管理程序: Doug Lea Malloc:Doug Lea Malloc实际上是完整的一组分配程序,其中包括Doug Lea的原始分配程序,GNU libc分配程序和ptmalloc。Doug Lea的分配程序原创 2016-01-18 22:43:28 · 912 阅读 · 0 评论 -
gcc学习一
将gcc将c语言源码最终编译成能够让机器执行的机器码主要经历了4个过程,为了执行该过程将演示helloworld.c代码的编译过程,代码如下:#include<stdio.h>#define TESTint main(int argc,char **argv){ #ifdef TEST printf("test -E"); #endif原创 2016-01-05 22:13:55 · 389 阅读 · 0 评论 -
gdb调试常用命令
在编译时要加上-g选项,生成的可执行文件才能用gdb进行源码级调试。使用gdb执行生成的文件。 help:可以查看命令类别 list:命令从第一行开始列出源代码,一次只会显示10行,回车可继续列出下面的代码 quit:退出 start:开始执行 n(next):控制语句一条一条执行 s(step):单步执行 bt(backtrace):查看当前函数调用的栈帧 i(info) loca原创 2016-01-08 23:02:18 · 447 阅读 · 0 评论