我正在为我的项目使用以下包装函数。我将在很多地方使用它。我有一个疑问,是否要继续使用此功能,或者改用宏或内联函数,因为我将在很多地方使用它。有人可以建议什么是最好的,因为我将在小型嵌入式设备中使用此代码。我在这里使用包装器来保持我的代码在不同平台上的可移植性。
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;
}
如果ptr
NULL
,free(ptr)
什么都不会做,所以你可以把你的mem_deallocate()
函数剥离成这样的东西:
void mem_deallocate(void **mem)
{
assert(mem != NULL);
free(*mem);
*mem = NULL;
}
这将节省由于if
而进行的任何分支;并使函数内容非常小。将其作为一个函数而不是将其内容内联的开销最好进行无限制测试。
同样在你的mem_allocate()
为什么不在malloc
后检查mem
NULL
?在当前的格式中,我认为仅使用运行它没有任何优势
void *mem = malloc(count * size);
直接输入代码,无需调用函数。