【发布时间】:2014-04-24 18:49:36
【问题描述】:
我有一个很不寻常的问题。 我已经看到了向 malloc 传递参数的两种变体。假设我们有:
int *arr = (int *) malloc(sizex * sizeof(*arr));
有人说使用sizeof(*arr) 不好,你应该改用sizeof(int)(在这个例子中)。
你能解释一下有什么区别,什么更好用吗?
【问题讨论】:
-
如果您需要从
int更改为,例如,float,如果您使用第一种技术 (sizeof(*arr)),则无需进行太多更改。另外,不要投你的malloc。 -
也不要从
malloc()投回。 -
为了好玩,你甚至可以写
int *arr = malloc(sizex * sizeof(arr[100])); -
@pmg,
sizeof (arr[0])是零吗?