char*buf = malloc(sizeof(char*)*16)vs char buf [sizeof(char*)*16]

Jac*_*ack 0 c arrays memory-management

我正在读一个C代码

char * buf = malloc(sizeof (char *) * 16)

代替

char buf[sizeof (char *) * 16]

有什么不同?好吧,我觉得第一个表达不必要,如果realloc()不叫,或者我错了思考?

Yan*_*min 5

char buf[sizeof(char*)*16]是一个自动分配的数组,通常是堆栈.只要buf在范围内,并且有足够的堆栈空间,它就是有效的.

malloc从一些堆中分配内存.它在free()编辑此内存之前有效.通常,可用的堆更多.