这行C代码有什么作用?
be_node *ret = malloc(sizeof(*ret));
Run Code Online (Sandbox Code Playgroud)
be_node的定义可以在这个文件中找到:http://funzix.git.sourceforge.net/git/gitweb.cgi?p = funzix/funzix; a = blob_plain; f = bencode/bencode.h; hb = HEAD
上面的代码行在此文件中找到:http://funzix.git.sourceforge.net/git/gitweb.cgi?p = funzix/funzix; a = blob_plain; f = bencode/bencode.c; hb = HEAD
我不明白sizeof(*ret)如果刚刚被宣布会返回什么?
Oli*_*rth 11
它与任何其他用途没有什么不同sizeof; 它将评估其操作数的大小. sizeof是基于编译时信息,1因此ret只是刚刚声明的无关紧要.
这个成语是首选的使用方式malloc.如果您要使用be_node *ret = malloc(sizeof(be_node)),请考虑如果您ret在以后更改类型会发生什么.如果您忘记更换" be_node"的两种用法,那么您将介绍一个微妙的错误.