请问哪位兄弟有内存管理的代码,要小巧高效稳定的,最好是C的
我是应用于嵌入系统的,想管理内存,而不是全部都用全局变量。有哪个兄弟有的,麻烦提供一个?呵呵,有条件也可以说出来
[解决办法]
http://blog.csdn.net/xiaocai0001/archive/2006/04/14/663752.aspx
好像原文有std::list和链表两种实现,你自己再找找,希望有用
对了嵌入系统也需要自定义内存管理?我不是学嵌入系统的,我以为内存池只有在大内存开销的时候才使用的。
[解决办法]
只包含了最基础的
struct memblock {
ulong flag; /* 区分空闲、已分配 */
ulong end; /* 该片内存结束地址 */
ulong buff[] /* 到 end 之间的内存 */
}
struct mempool {
void * start_addr;
ulong length;
void * search_addr;
ulong valid_frame;
.....
}
int pool_init( struct mempool* pool, void* addr, ulong length )
{
struct memblock * start_frame = (struct memblock *)addr;
struct memblock * end_frame = (struct memblock *)(((ulong)addr + length - 8)&(~3))
pool-> search_addr = start_frame;
pool-> start_addr = ....
....
start_frame-> flag = 未分配
start_frame-> end = (ulong)end_frame;
end_frame-> flag = 已分配;
end_frame-> end = (ulong)start_frame;
}
需要参数的合法化的验证,信号量保护那些的。
void* malloc( pool, size )
{
struct memblock * tmp = search( pool );
if ( tmp ) {
if ( memblock_size > 最小块大小 )
将tmp分割成两块
next = tmp + 8 + size;
next-> flag = unused; next-> end = tmp-> endl
tmp-> flag = used; tmp-> end = tmp + 8 + size(调整为对齐了的);
}
}
释放自己照着做
[解决办法]
看《STL源码剖析》,抄STL的就可以了。
[解决办法]
看linux中mm中malloc等的实现
[解决办法]
stl的源代码
boost的源代码~~~~~~~~