【发布时间】:2015-02-10 14:44:30
【问题描述】:
我正在用 C 语言编写一些极其重复的代码(读取 XML),我发现像这样编写代码可以更轻松地在构造函数中复制和粘贴代码*:
something_t* something_new(void)
{
something_t* obj = malloc(sizeof(*obj));
/* initialize */
return obj;
}
我想知道的是,当我刚刚定义obj 时,像这样使用sizeof(*obj) 是安全的吗? GCC 没有显示任何警告并且代码运行良好,但 GCC 往往有“有用”的扩展,所以我不相信它。
* 是的,我意识到我应该只编写一个 Python 程序来编写我的 C 程序,但它几乎已经完成了。
【问题讨论】:
-
如果你愿意,你甚至可以省略括号:
(sizeof *obj)。 -
这甚至是the recommended way 正是因为你可以很容易地看到你已经分配了正确的数量
-
人们不断在答案中回答不同的问题,并在 cmets 中回答我的问题:\