300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 动态内存申请函数 malloc_malloc 的实现原理 内存池 mmap sbrk 链表

动态内存申请函数 malloc_malloc 的实现原理 内存池 mmap sbrk 链表

时间:2024-04-06 07:24:17

相关推荐

动态内存申请函数 malloc_malloc 的实现原理  内存池 mmap sbrk 链表

参考:《深入理解计算机系统》 本文需要比较多的前言基础,在前面的文章中都有体现

malloc实现原理 这位大佬写得也很不错,部分内容参考这里。

要看这个malloc,得先了解静态内存分配和动态内存分配。下面是这两者的区别:(静态内存分配在书中一直没找到。。)

内存的静态分配和动态分配的区别主要是两个:

一是时间不同。静态分配发生在程序编译和连接的时候。动态分配则发生在程序调入和执行的时候。

二是空间不同。堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由函数malloc进行分配。不过栈的动态分配和堆不同,他的动态分配是由编译器进行释放,无需我们手工实现。

对于一个进程的内存空间而言,可以在逻辑上分成3个部份:代码区,静态数据区和动态数据区。动态数据区一般就是“堆栈”。“栈(stack)”和“堆(heap)”是两种不同的动态数据区,栈是一种线性结构,堆是一种链式结构。进程的每个线程都有私有的“栈”,所以每个线程虽然代码一样,但本地变量的数据都是互不干扰。一个堆栈可以通过“基地址”和“栈顶”地址来描述。全局变量和静态变量分配在静态数据区,本地变量分配在动态数据区,即堆栈中。程序通过堆栈的基地址和偏移量来访问本地变量。

---------------------

作者:liuchao1986105

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。