내가 다음 코드의 결과에 약간의 차이를 보았다 :C 함수가 작동하는지 어떻게 알 수 있습니까?
#include <stdio.h>
#include <malloc.h>
#include <string.h>
int main(void)
{
char* ptr;
ptr = (char*)malloc(sizeof(char) * 12);
strcpy(ptr, "Hello World");
printf("%s\n", ptr);
printf("FREEING ?\n");
free(ptr);
printf("%s\n", ptr);
}
는 설명해 드리죠 없습니다 : 나는 다른 결과를 얻을 OS를 따라 printf와 세 번째 호출에서
, 윈도우에서 gargabge의 caracters, 아무것도 Linux 및 Unix 시스템에서는 "Hello World"가 인쇄됩니다.
메모리가 해제되었을 때 포인터의 상태를 확인하는 방법이 있습니까?
인쇄 메커니즘은 항상 신뢰할 수 없다고 생각합니다.
Thnaks.
인사말.
포인터를 놓아도 포인터가 가리키는 실제 메모리가 반드시 변경되는 것은 아닙니다. – Gabe