Jac*_*ack 0 c arrays memory-management
我正在读一个C代码
char * buf = malloc(sizeof (char *) * 16)
代替
char buf[sizeof (char *) * 16]
有什么不同?好吧,我觉得第一个表达不必要,如果realloc()不叫,或者我错了思考?
char buf[sizeof(char*)*16]是一个自动分配的数组,通常是堆栈.只要buf在范围内,并且有足够的堆栈空间,它就是有效的.
malloc从一些堆中分配内存.它在free()编辑此内存之前有效.通常,可用的堆更多.