我能理解这是一种有效的模式,但为什么会认为这样更好呢?遵循这种模式有什么优势吗?或者没有呢?通常在C中,调用者分配内存比被调用函数分配内存更好-这就是为什么在我的看法中,strcpy函数比strdup函数更好。
示例:
最近我写了相当多的代码,看起来像这样:
struct foo *a = foo_create();
// do something with a
foo_destroy(a);
如果foo
不仅仅是一个平面结构,那么我想把所有初始化放在一步中。此外,假设这个结构应该在堆上。为什么最好像这样做:struct foo *a = malloc(sizeof(foo));
foo_init(a);
// do something with a
foo_destroy(a)