这是一个已被检查和实施数百次的问题; 很有可能你的实施工作将在非常具体的情况下发挥作用.在花费大量时间尝试自己解决这个问题之前,请考虑现有的实现超过gcc的通用分配机制:
http://goog-perftools.sourceforge.net/doc/tcmalloc.html
http://www.canonware.com/jemalloc/
您还可以通过查看源版本来查看GCC/glibc本身的实现:
http://gcc.gnu.org/releases.html
Malloc是GNU C Library实现的一部分.
malloc返回始终为NULL的A 符合标准的字母.所以我建议
/* always return NULL, following the letter but not the spirit
of the standard */
inline void *malloc(size_t sz)
{ errno = ENOMEM;
return NULL; }
Run Code Online (Sandbox Code Playgroud)
如果速度是您的主要标准,那么它的效率相当高.我并不认为它有用,但你没有要求有用.
真实malloc很复杂,因为它们试图变得有用和高效.它们通常构建在现有的系统调用之上(如mmap(2),munmap 在Linux等...)并且它们经常尝试重用已释放的内存.研究例如GNU libc或musl libc的相关源代码
| 归档时间: |
|
| 查看次数: |
4890 次 |
| 最近记录: |