【发布时间】:2013-11-20 22:51:18
【问题描述】:
我的任务是动态管理内存以超越 malloc 的速度。一些要求:
1) 有一个指向结构体的指针
2) 使用“块”内存
3) 内存将通过类似调用进行分配
init(memory * mem, int chunk_size, int num_chunks)
4) 内存指针将被全局声明。
5) 不使用系统调用
所以,我想过让我的结构只是:
typdef struct {
char *byte;
} memory;
然后这会让我的 init 函数执行以下操作:
mem = new memory[chunk_size * num_chunks];
我不知道你是否可以在 C 中做到这一点——通常我会使用 malloc!然后释放我是否能够将指针设置为空?
感谢您的帮助!
【问题讨论】:
-
malloc系列函数是动态内存分配的标准接口。您将使用它们(或某些特定于操作系统的等效项)一次来获取内存池,然后稍后在该池上使用您的分配器。除非你被明确告知不要太打电话给malloc来获得游泳池,否则你会让这件事变得更难。 -
是的。关键是让它变得比它需要的更难。没有系统调用——希望能减少开销。
-
希望你的分配器是线程安全的吗?
-
目前,线程安全不是问题。
-
设置一个
unsigned char的喇叭大数组,静态存储范围(即在文件范围内声明或使用关键字static)作为您的“堆”,然后构建某种数据结构索引到它。
标签: c memory-management operating-system