海湾合作委员会 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 network
与 return NULL
相同。
if(network == NULL) {
return NULL;
}
如果分配成功,您可能希望确保结构成员在此处处于已知状态
/* if (network) { */
/* id = 0; */
/* name = NULL; */
/* } */
return network;
}
关于c - 在程序的生命周期中使用 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3718543/