#include<stdio.h>
#include<malloc.h>
int* MyFunc(int* const pInt)
{
return pInt;
}
void main()
{
int * pInt1 = (int*)malloc(sizeof(int));
*pInt1 = 10;
printf("*pInt1 => %d\n" , *pInt1);
int * pInt2 = MyFunc(pInt1);
printf("*pInt2 => %d\n" , *pInt2);
free(pInt1);
free(pInt2);
}
//result
//analysis
그림에서 확일할 수 있듯이
동적으로 heap에 생성된 5000(실제로는 다를 수 있다)번지의 값을
pInt1 , pInt2가 공유하는 방식의 코드이다.
실제로 printf()함수를 통해 출력시에 당연히 각각 10의 값을 출력하지만
free()함수를 2번 호출하게 되면 이미 해제된 메모리를 또 해제하려고 하기에 오류가 발생한다.