gpt4 book ai didi

c - 在哪里 malloc 用户缓冲区?用户代码还是库代码?

转载 作者:太空宇宙 更新时间:2023-11-04 03:53:09 24 4
gpt4 key购买 nike

<分区>

我正在编写一个将被许多应用程序使用的库。是否有分配缓冲区的首选方法?用户应该在主应用程序中 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
}

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com