malloc用户缓冲区在哪里?用户代码还是库代码?
我正在编写一个库,它将被许多应用程序使用。 是否有分配缓冲区的首选方法? 用户是否应该在主应用程序中对其进行malloc?或者库函数应该对其进行malloc吗?请注意,性能或空间使用不是一个问题。对于开发API,我从良好的设计角度提出了更多要求 [1] 应用程序分配缓冲区空间:malloc用户缓冲区在哪里?用户代码还是库代码?,c,malloc,C,Malloc,我正在编写一个库,它将被许多应用程序使用。 是否有分配缓冲区的首选方法? 用户是否应该在主应用程序中对其进行malloc?或者库函数应该对其进行malloc吗?请注意,性能或空间使用不是一个问题。对于开发API,我从良好的设计角度提出了更多要求 [1] 应用程序分配缓冲区空间: int main() { char **abc = malloc (1024*sizeof(char*)); abc[0] = malloc .. abc[1] = malloc .. foo(
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
}
让用户选择:内部库分配器或用户定义分配器。让用户选择:内部库分配器或用户定义分配器。考虑:
如果其中一点不正确,则最好由库管理空间。否则,需要用户和库之间进行额外的通信来管理内存。在第一种情况下,找出需要多少空间,在第二种情况下,指出在用户分配更多空间之前,库无法执行请求的操作。我必须开发API并告诉用户是否应该传递空指针或分配的缓冲区,所以我必须做出这个决定,或者做一个函数,比如接受分配器作为输入参数。正如您所看到的,有多种方法可以实现这一点。我必须开发API并告诉用户是否应该传递空指针或分配的缓冲区,因此我必须做出决定。例如,我必须创建一个函数,该函数将接受分配器作为输入参数。正如你所看到的,有各种各样的方法来实现这件事。如果它有帮助,请告诉我。如果它有帮助,请告诉我。