C语言 项目的内存分配和免费包装器



我正在为我的项目使用以下包装函数。我将在很多地方使用它。我有一个疑问,是否要继续使用此功能,或者改用宏或内联函数,因为我将在很多地方使用它。有人可以建议什么是最好的,因为我将在小型嵌入式设备中使用此代码。我在这里使用包装器来保持我的代码在不同平台上的可移植性。

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 NULLfree(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); 

直接输入代码,无需调用函数。

相关内容

  • 没有找到相关文章

最新更新