* 참고 :이 답부터 당신은 내 질문에 대답하지 않습니다를 참조, 중복 질문이 아니다. 나는 malloc()과 calloc()이해야 할 일을 알고 있지만 가상 머신에서 사용할 때 차이점이없는 것 같지 않은지 궁금해합니다. 은 calloc 동안() 공의와 초기화의 malloc()가 당신에게 메모리를 할당 -는 (가상 머신 리눅스에서 실행) C에서의 malloc()과은 calloc()의 차이를 찾을 수 없습니다
나는 차이가되어야 하는지를 알고있다.
것은 내 코드가 표시되지 않습니다,이고,의 malloc()가 내 가상 머신 우분투에서 실행하는 동안 어떤 변화를주는 것 같지 않습니다. 몇 번 실행했고 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;
}
뭔가 다른 무엇을 정확하게은 calloc 같은 행위를 의미합니까? 당신은 0을 얻고 있습니까? 그것은 허용된다, 아무것도 * 당신이 * 얻지 않을 것이라는 점을 밝힌다. 그러나 아무 것도 당신에게 * 0도 얻을 것이라고 말하지 않습니다. –
OT :'printf()'에 대한 코드 호출을 참조하십시오 :'malloc()'에 의해 반환 된 메모리가 초기화되지 않았습니다. 초기화되지 않은 메모리 내용을 인쇄하면 정의되지 않은 동작이 호출됩니다. – alk
간단한 이유 : 페이지가 보안상의 이유로 OS에서 지워집니다. 당신은 결코 그것에 의지하지 않을 것입니다. – Olaf