在C中找不到malloc()和calloc()之间的区别(从虚拟机Linux运行)

Dav*_*eli -1 c linux malloc virtual-machine calloc

*注意:这不是一个重复的问题,因为你提到的答案没有回答我的问题.我知道malloc()和calloc()应该做什么,但想知道为什么在将它与虚拟机一起使用时似乎没有什么区别.

我知道应该是什么区别 - malloc()只是为你分配内存,而calloc()用0来初始化它.

问题是,在我的代码中它没有显示,并且malloc()在从我的虚拟机Ubuntu运行时似乎没有任何区别.我运行了几次,malloc就像calloc一样.

注意 - 我刚刚用我的实际硬盘驱动器检查过,它似乎工作正常,我得到了不同的结果.

代码:

#include <stdio.h>
#include <stdlib.h>

int main(){
int i,n;
float *ptr1, *ptr2;
printf("enter a total number of float items: ");
scanf("%d", &n);

ptr1 = malloc(n*sizeof(float));
ptr2 = calloc(n, sizeof(float));

printf("malloc     |    calloc\n");
printf("----------------------\n");
for(i=0;i<n;i++)
printf("%-10f  %10f\n", *(ptr1+i), *(ptr2+i));
printf("\n");
free(ptr1);
free(ptr2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

Jea*_*nès 6

calloc保证你有一个归零的内存块,而malloc不是.然后它可能会发生malloc,但从依赖它.