内存分配策略

摘自《游戏编程精粹3》

类型 描述
固定大小的缓冲池 所有内存的分配都是一样大小的;减少了每次分配的内存浪费
共享内存 分配使用的是共享内在。
多个堆 分配使用不同的堆,视分配大小和类型而定
单线程 分配和释放线程不安全。在单线程代码里才有用
垃圾回收 调用释放的时候并不释放内存。调用垃圾回收函数的时候才释放内存
基于栈的策略 所有的内存都是在栈上面的。对于生命期短的容器类而言比较有用
静态内存 分配的内存存在于程序的数据区(静态内存)里面
从不删除 调用释放的时候绝不释放内存。当程序退出的时候才回收内存
一次性删除 调用释放的时候并不释放内存。通过定制的函数来释放内存
边界对齐策略 为了满足某些条件,内存边界总是对齐分配。例如在使用页对齐内存或者是SSE中使用指令对齐内存的时候
调试 分配记录 检查内存泄漏 检查内存覆盖情况 峰值分配大小等等


C语言可以通过使用动态内存分配函数来实现内存分配策略。在C中,我们可以使用malloc, calloc, realloc和free这几个函数来动态分配和释放内存。 malloc函数用于分配一块指定大小的内存。它接收一个参数,表示需要分配的内存的大小(以字节为单位),并返回一个指向这块内存的指针。如果分配失败,则返回NULL。 calloc函数也用于分配一块内存,但是与malloc不同的是,它还会将分配的内存清零。它需要两个参数,第一个参数表示要分配的内存块数,第二个参数表示每个内存块的大小。它返回一个指向这块内存的指针,如果分配失败,则返回NULL。 realloc函数用于调整已分配内存的大小。它接收两个参数,第一个参数是一个已经分配了内存的指针,第二个参数表示需要重新分配的内存的大小。该函数会返回一个指向重新分配后内存的指针,如果内存不足或分配失败,则返回NULL。 free函数用于释放以前通过malloc、calloc或realloc函数分配的内存。它接收一个参数,表示需要释放的内存的指针。使用free函数后,被释放的内存可以再次用于分配内存分配策略可以根据具体的需求进行设计和实现。例如,可以通过循环调用malloc函数来动态分配多块不同大小的内存,并在使用完后通过调用free函数来逐个释放这些内存块。还可以使用realloc函数来调整已经分配内存的大小,以适应不同的需求。另外,还可以使用calloc函数来分配一块已经初始化为0的内存块。 通过合理使用这些内存分配函数,可以实现不同的内存分配策略,以满足不同的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值