[英]Optimizing realloc function
我正在编写一个realloc函数,当前我的realloc处理两种情况(不计算空情况)
我的问题是,我还要处理更多案件吗? 我想不到。
我想到了这样一种情况,上一个块可能是空闲的,并且可以向前扩展我的较早块,但这将需要一个memcpy,因此实现该目标将毫无意义。
包括新尺寸小于旧尺寸的情况; 理想情况下,您应该拆分当前块并将其末尾释放。
乱分配内存分配例程非常危险; 大多数已经在不影响安全性的前提下进行了物理上的优化。 您可能进行的任何优化都可能会很好地利用这个漏洞-目前有许多“免费使用后”样式的安全问题。
考虑到这一点,在哪里比OpenBSD源代码更好看: http : //www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdlib/malloc.c? rev=1.140;content- 类型=文本%2FX-cvsweb的标记
在某些情况下,重新分配会将块大小减少了不小的数量,值得回收再分配到其他位置。
您可以努力优化性能的重新realloc
(即避免移动块和memcpy
),也可以针对内存碎片进行优化。
如果是后者,则可以考虑移动块以填充最佳间隙,而不仅仅是扩展或缩小它。
内存分配器始终是一个折衷方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.