我需要一个简单而有效的内存分配算法

Met*_*est 1 c linux gcc x86-64

我正在尝试实现自己的内存分配代码,这个代码简单而有效.知道我可以从哪里开始.gcc使用什么算法?

Chr*_*son 7

这是一个已被检查和实施数百次的问题; 很有可能你的实施工作将在非常具体的情况下发挥作用.在花费大量时间尝试自己解决这个问题之前,请考虑现有的实现超过gcc的通用分配机制:

http://goog-perftools.sourceforge.net/doc/tcmalloc.html

http://www.canonware.com/jemalloc/

您还可以通过查看源版本来查看GCC/glibc本身的实现:

http://gcc.gnu.org/releases.html

http://ftp.gnu.org/gnu/glibc/

Malloc是GNU C Library实现的一部分.


Bas*_*tch 5

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 libcmusl libc的相关源代码