我正在为我的项目使用以下包装函数。我打算在很多地方使用它。我有一个疑问,继续使用这个函数或者使用宏或内联函数,因为我将在很多地方使用它。有人可以建议什么是最好的,因为我将在一个小型嵌入式设备中使用此代码。我在这里使用包装器来保持我的代码可以在不同的平台上移植。
void mem_deallocate(void **mem)
{
assert(mem != NULL);
if (*mem)
{
free(*mem);
*mem = NULL;
}
}
void *mem_allocate(size_t count, size_t size)
{
void *mem = malloc(count * size);
return mem;
}
答案 0 :(得分:1)
free(ptr)
为ptr
, NULL
将不执行任何操作,因此您可以将mem_deallocate()
函数删除为以下内容:
void mem_deallocate(void **mem)
{
assert(mem != NULL);
free(*mem);
*mem = NULL;
}
这样可以省去由if
引起的任何分支;并使功能内容非常小。将此作为一个函数而不是将其内容放入内联的开销将是最好的测试。
同样在mem_allocate()
中,您为什么不在NULL
之后mem
查看malloc
?在目前的格式中,我认为仅使用
void *mem = malloc(count * size);
直接使用代码,而不调用函数。