0

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

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;
}
4

1 回答 1

1

free(ptr)ptr如果is什么都不做NULL,所以你可以把你的mem_deallocate()函数精简成这样:

void mem_deallocate(void **mem)
{
    assert(mem != NULL); 

    free(*mem);
    *mem = NULL;
}

这将为您节省由于if;导致的任何分支。并使功能内容非常少。最好对将其作为函数而不是将其内容内联的开销进行测试。

另外在你mem_allocate()为什么不检查NULL之后memmalloc?以目前的格式,我看不到运行它比仅使用它有任何优势

void *mem = malloc(count * size); 

直接在你的代码中,而不调用函数。

于 2013-10-25T04:39:33.567 回答