【发布时间】:2011-04-14 17:38:08
【问题描述】:
虽然对于 C/C++,malloc / free 有许多不同的复杂实现,但我正在寻找一个非常简单且(特别是)小的,适用于固定大小的缓冲区并支持 @987654323 @。不需要线程安全等,我的对象很小,大小变化不大。有什么可以推荐的实现吗?
编辑:
我将使用该实现作为接收器的通信缓冲区来传输可变大小的对象(接收器不知道)。分配的对象不会存活很久,但可能有多个对象同时使用。
由于每个人似乎都推荐标准 malloc,我或许应该重新提出我的问题。我需要的是在缓冲区之上“最简单”的 malloc 实现,我可以开始针对自己的需要进行优化。也许最初的问题不清楚,因为我不是在寻找优化的 malloc,只是为了一个简单的。我不想从 glibc-malloc 开始并对其进行扩展,而是使用轻量级的。
【问题讨论】:
-
你能澄清一下“支持
realloc”是什么意思吗?realloc的一种兼容实现仅使用malloc、free和memcpy。你能接受吗?从技术上讲,另一个兼容的实现总是返回 NULL,但很明显你不是那个意思。 -
你需要解释为什么你不能使用你的编译器自带的。如果这是因为您在某种环境中工作,而您的编译器没有附带
malloc(可能是嵌入式软件),那么您需要描述环境以获取任何对您有用的答案。目前,这个问题还不能令人满意地回答(除了 Martin York 建议使用与编译器捆绑的那个)。 -
是的,一个非常简单的
realloc(如果缓冲区中有足够的可用空间则不返回NULL)是可以接受的。 -
对 realloc 的支持似乎与在固定大小的缓冲区上工作不一致——你的意思是“在可用内存的固定子集中工作”还是“与固定大小的对象一起工作”——或其他什么?
-
我的意思是:malloc 等在我提供的可用内存的固定子集上工作。