#include<stdio.h>
int main()
{
int z; int **x; int *y;
x = (int **) malloc(sizeof(int*));
*x = malloc(sizeof(int));
**x = 5;
y = *x; //POINT 1
z = 3;
*x = &z;//POINT 2
printf("%d\n",*y);
printf("%d\n", **x);
**x = 2;
printf("%d\n",*y);
*y=1;
printf("%d\n",z);
}
출력은?예기치 않은 출력 내가 얻을
3
5
2
내 질문은해야하지 첫 번째 출력 인쇄 3? 5가 인쇄되는 이유는 무엇입니까?
내 질문에이 프로그램은 매달려있는 참조 또는 가비지를 생성합니까? 나는 그것이이 예상치 못한 결과의 원인 중 하나라고 생각합니다. 누군가 설명해 주시겠습니까?
들여 쓰기 코드 – Soren
아니, 당신의 프로그램은 단순히 메모리 누수,하지만 할당되지 않은 메모리에 기록하지 않습니다 않으며 허상 포인터 결과 않습니다. –
또한 왜 처음에는'3'을 인쇄해야하는지 알지 못합니다. ** 포인터가 무엇인지 ** 생각해야합니다. 포인터는 메모리 자체에 저장됩니다. 그것들은 가리키고있는 객체들처럼 복사되고 전달 될 수 있습니다 (이 경우'int'). 또한 포인터 **는 참조가 아니라는 것을 이해해야합니다.** –