CMU 15213:malloc笔记和malloc实验

1. malloc笔记

在这里插入图片描述

1.1 基础概念

1.dynamic memory allocators:应用程序运行期间申请的内存(malloc)。
在这里插入图片描述
2.堆:dynamic memory allocator管理的进程内存区域
3.types of allocator:隐式分配器(new and garbage collection)和显示分配器(malloc & free)

1.2 explicit allocator

1.malloc、free、realloc
2.16-byte (x86-64) alignment on 64-bit systems
3.内部碎片产生的原因:

  • 维持堆所需的数据结构开销
  • 对齐的需要
  • 分配器实现的策略(比如,to return a big block to satisfy a small request)

4.外部碎片:Occurs when there is enough aggregate heap memory, but no single free block is large enough。(大块被划分成小块,虽然整个空闲内存能够放下程序,但是找不到单独的一块去存放)

5.keep track of free blocks:显式、隐式链表、Segregated free list(Different free lists for different size classes)、Blocks sorted by size(红黑树,长度为key)

1.2.1 隐式空闲链表

1.block structures

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
malloc lab是卡耐基梅隆大学(Carnegie Mellon University)的一个项目,开源在GitHub上。 malloc lab是一个C语言编程实验,旨在帮助学生更好地理解和实现动态内存分配的malloc函数。在这个实验中,学生需要实现一个简化版的malloc函数,来管理和分配动态内存空间。 动态内存分配是由操作系统提供的一种机制,允许程序在运行时请求和释放特定的内存空间,而不是在编译时固定分配内存空间。malloc函数是用来在内存堆(heap)上分配一定大小的内存块的,其原型为void *malloc(size_t size)。 在这个实验中,学生需要实现一个malloc函数的替代版本,使用了显式的空闲链表(explicit free list)来管理和分配内存块。这个实验会带领学生逐步掌握内存管理的基本概念和技巧,如内存块的分割和合并、空闲块的查找和分配等。 这个malloc lab项目的源码和相关实验指导都托管在GitHub上,使得学生和其他用户可以方便地查看和使用。GitHub是一个广受欢迎的开源代码托管平台,许多开发者和组织都会将自己的项目和代码开源在GitHub上,与其他人分享和协作。 通过在GitHub上托管malloc lab的项目,可以促进知识的传播和学习者之间的交流。学生可以参考已有的代码和实验指导来更好地理解malloc函数的实现原理,并通过参与开源项目的方式来提高自己的编程能力和软件工程实践能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值