我正在编写一个将被许多应用程序使用的库。是否有分配缓冲区的首选方法?用户应该在主应用程序中对其进行 malloc 吗?或者库函数应该 malloc 吗?请注意,性能或空间使用不是问题。我从一个好的设计角度要求更多的开发 API。
[1] 应用程序分配缓冲区空间:
int main()
{
char **abc = malloc (1024*sizeof(char*));
abc[0] = malloc ..
abc[1] = malloc ..
foo(abc);
free_all(abc);
}
/*================================*/
//external API
void foo(char **abc) {
strncpy(abc[0], "hello\0", 6);
strncpy(abc[1], "world\0", 6);
//and so on
}
[2] 库函数 mallocs 缓冲区
int main()
{
char **abc = NULL;
foo(&abc);
free_all(abc);
}
/*================================*/
//external API
void foo(char ***abc)
{
int num_elem = 32;
*abc = malloc (num_elem * sizeof(char*));
(*abc)[0] = malloc(6);
(*abc)[1] = malloc(6); //and so on
strncpy( (*abc)[0], "hello\0", 6);
strncpy( (*abc)[1], "world\0", 6);
//and so on
}