int a = 20;
int* p = &a;
//여기서 p는 a를 가리키고 있다
a = 20;
*p = 20;
p = (int*) malloc(4); //memory allocation //메모리4바이트를 할당하고, 시작주소를 넘겨라(강제형변환 연산자)
//힙공간에 4바이트 할당을 하고 시작번지를 갖고 있게 하라
*p = 80; //할당영역에 80을 넣어라.
p = (int*)malloc(sizeof(int)); //이 경우 void*가 리턴됨. 따라서 형변환 int 를 해줌. //할당
free(p); //할당해제
char* s = "ace"; //s가 "ace"메모리 영역을 가리키고 있음.
s = (char*)malloc(strlen("ace")+1); //순수한 문자열의 길이이므로 +1 //널문자추가 //4바이트가 할당되고 s는 힙메모리 4바이트를 가리킴
strcpy(s, "ace");
free(s);
---
int n;
int* p = (int*)malloc(n*sizeof(int)); //5를 입력받았으면 5*4=20바이트를 할당하고 시작주소를 p에게 넘겨줌.
p = (int*)calloc(n, sizeof(int)); //같음. 초기화시 많이 사용.
//realloc(p, sizeof(int)*10);
---
//컴파일 후 stack영역이 사용됨. 런타임시(프로그램 실행시)에는 heep영역을 써야함.
(양주종의 코딩스쿨 보면서 메모. http://func.kr)