【发布时间】:2013-11-22 10:30:07
【问题描述】:
我创建了一个可以创建内存池的函数,但是创建后如何选择它们?
boolean create_memory_pool(char *name, int size)
{
boolean result;
result = false;
name = malloc(size));
if( name != NULL)
result = true;
return result;
}
如果我创建了多个 1 内存池,则在 main 函数中 例如
int main()
{
boolean x;
x = create_memory_pool( "pool1", 1024);
x = create_memory_pool( "pool2", 2048);
x = create_memory_pool( "pool3", 2048);
// now how to select pool1 or pool2 or pool3
}
我要做的是创建一个名为 select 的函数,通过它我可以传递池的名称,并返回对所调用池的一些引用。
boolean select( char *name)
{
//return true if pool of name "name" is selected.
}
我想我需要声明一个全局变量 X,它作为对当前选择的池的引用,该池的开头为 NULL。 在创建每个内存池时,我可以在“创建内存池”函数的末尾传递函数“select(name)”,这样在创建新内存池时,它将自动选择到全局 X。或者我可以传递名称我想选择的任何池。 但我一直在思考它的实现。
【问题讨论】:
-
当你说“内存池”时,你是什么意思?听起来好像您只是指动态分配的字符串? “内存池”通常是在内存分配实现中使用的东西,例如,它包含“一个”可用内存池,您可以从中进行分配。你的问题很混乱。
-
您需要创建一个列表来跟踪这些指针。
-
创建的池与
char *变量中的名称没有关系。事实上,这个价值只是被忽略了。如果要存储链接到名称的指针,则必须自己处理数据结构。为什么你认为这样的事情是可能的,因为 C 语言的一部分是我无法理解的。 -
@SJuan76 对不起,我是 c 的新手。我也在考虑列表。
标签: c memory-management pool