【发布时间】:2012-03-01 04:52:32
【问题描述】:
我正在阅读一个 C 代码
char * buf = malloc(sizeof (char *) * 16)
而不是
char buf[sizeof (char *) * 16]
有什么区别?好吧,我认为第一个表达式是不必要的,如果没有调用realloc(),还是我想错了?
【问题讨论】:
-
这是自动数组和动态数组的区别。一种位于自动存储中,您不必解除分配,另一种位于动态存储中,您必须解除分配。喜欢第一个。
-
第一行动态分配一个字节数组(字符),只要指针的大小(可能是 4 个字节)乘以 16 = 64 个字节。这没有任何意义。第二行静态分配一个字节数组(字符),只要指针的大小乘以 16 = 64 字节。这也没有任何意义。
-
donwvotes - 可以解释一下吗?
标签: c arrays memory-management