【发布时间】:2021-02-25 05:15:44
【问题描述】:
今天,我注意到一堆代码将如下所示的结构实例化,而 ServiceMsg 是一个结构。
ServiceMsg *msg = (ServiceMsg *)malloc(sizeof * msg);
我从来没有见过 malloc 可以这样使用。谁能给我解释一下??? 正如我所知,缓冲区的大小通常像这样分配 malloc(sizeof(int) * n) ..
【问题讨论】:
-
那是
sizeof(*msg),不是乘法。 (而new msg会好一百万倍(而智能指针又好一百万倍(而且没有称为C/C++的语言)) -
@john 为什么会这样?
-
@KenY-N 你知道,如果不是
*和msg之间的空格,我想我会发现的。 -
向 OP 说清楚。仅当
X是一种类型时,sizeof(X)才需要括号。如果X是一个表达式(如上),则它们不是。