내 생각에 블록의 자동 변수는 외부 범위로 점프 한 후에 할당 취소됩니다. 그 다음 나는 이것을 시험하기위한 프로그램을 썼다. 그리고 놀랍게도, 그것은 ok로 달렸다. 심지어 여러 번 실행되었습니다.블록 내부의 자동 변수 메모리에 액세스하십시오.
이 프로그램은 다음과 같습니다
#include <stdio.h>
int main(int argc, char **argv)
{
int *a = 0;
{
int b = 2;
a = &b;
}
printf("%d\n", *a);
return 0;
}
인쇄 결과는 2, 어떻게 이런 일이 무엇입니까?
메모리가 아직 남아 있습니다. 다음 함수 호출 또는 블록 범위에 의해 메모리가 막힐 것입니다. 힙 할당 블록을 free'ing 후 메모리에서 읽기 좋아. 작동하는 것은 믿을 수 없지만 때때로 작동합니다. – woolstar
간단합니다. 운이 좋았습니다. 메모리는 "무료"로 표시되지만 누군가 다른 사람이 요청하지 않으면 메모리가 필요하지 않기 때문에 "해제"되지 않습니다. –
남자가 살고있는 것처럼 바닥을 깔아도 컴퓨터를 제공합니다. 심지어 사람이 이사를 했는데도 여전히 집에 컴퓨터가 있습니다. – Rugal