为什么malloc
总是用垃圾值初始化而calloc
总是用0初始化?任何背后的原因?
为什么我们不能使用realloc
而不是malloc
进行动态内存分配?
动态地重新分配内存后,它的初始值是什么?
代码:
int *ptr;
ptr = (int *) realloc(ptr,50);
printf("%d",*ptr);
为什么Malloc总是用垃圾值初始化而Calloc总是用0初始化?
此行为由C标准定义。
实际上,realloc
根本不初始化分配的内存。这主要是出于性能原因。在自己写信之前,请勿阅读它,以免招致UB。
NULL
是指定用于初始化分配给所有malloc
的内存。
为什么我们不能使用realloc而不是malloc进行动态内存分配。
malloc()
。只需将calloc()
作为第一个参数即可。
您的示例已调整:
0
打印:
You can