gpt4 book ai didi

c - 在程序的生命周期中使用 malloc

转载 作者:行者123 更新时间:2023-12-04 11:36:13 25 4
gpt4 key购买 nike

海湾合作委员会 4.4.4 c89

我一直想在项目的整个生命周期中使用 malloc 作为作用域。

但我只是想知道我的想法是否是最佳实践。例如,我在 main 中初始化了一个结构实例。并创建 2 个用于创建和销毁的函数。我只是想知道这样做是否正确。

我在下面有一些框架代码。

非常感谢您的任何建议,

typedef struct Network_dev_t {
size_t id;
char *name;
} Network_dev;

Network_dev* create_network_device(Network_dev *network)
{
network = malloc(sizeof *network);
if(network == NULL) {
return NULL;
}
return network;
}

void do_something(Network_dev *network)
{
/* Do something with the network device */
}

void destroy_network_device(Network_dev *network)
{
free(network);
}

int main(void)
{
Network_dev *network = NULL;

network = create_network_device(network);

/* Do something with the network device */
do_something(network);

destroy_network_device(network);

return 0;
}

最佳答案

看起来不错。

关于 create_network_device 我有一点或两点

Network_dev* create_network_device(Network_dev *network)

无需传入指针;我宁愿有 Network_dev* create_network_device(void)

{
network = malloc(sizeof *network);

if 并不是真正必要的;如果 malloc 失败,函数末尾的 return networkreturn NULL 相同。

    if(network == NULL) {
return NULL;
}

如果分配成功,您可能希望确保结构成员在此处处于已知状态

    /* if (network) {       */
/* id = 0; */
/* name = NULL; */
/* } */

return network;
}

关于c - 在程序的生命周期中使用 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3718543/

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