노는게 제일 좋습니다.
13회차 : 동적 메모리 할당, 이중 포인터 본문
참고자료 http://soen.kr/
1. 동적 할당, 할당 해제
malloc과 calloc은 인수에 넣은 만큼의 공간을 할당하는 함수. free는 메모리를 풀어주는 함수. stdlib.h에 있다.
void *malloc(size_t size );
void *calloc( size_t num, size_t size );
void free(void *memblock );
예
ar = malloc(10 * sizeof(int));
printf("%p",ar);
free(ar);
printf("\n%p", ar);
첫 번째 인수로 할당된 메모리의 번지를 주고, 두 번째 인수로 재할당 크기를 준다.
첫 번째 인수가 NULL이면 메모리를 새로 할당하고, 두 번째 인수가 0이면 할당 해제한다.(free함수와 같음)
혹시 메모리 사정상 포인터값이 바뀔 수는 있지만, 내용은 유지된다.
3. 할당한 메모리 크기 읽기
size_t _msize(void *memblock);
표준함수는 아니다.
int *pi = &i;
int **ppi = π
void(또는 int) main(int argc,char *argv[],char *env[]);
- int argc : 받을 인수의 갯수. 프로그램 이름을 포함한다. (program 1 2와 같이 호출이 argc의 값은 3)
- char *argv[] : 인수의 값. argv[0]은 프로그램 이름. 이후는 인수
- char *env[] : 운영체제의 환경변수
7. void ** 이중포인터 void **은 void *과는 다르게, 어떤 대상체를 가리키며 어떤 타입인지 정확히 알고있다. void * 타입인 어떤 포인터를 가리키는 것이다. void *avp[5]; int i = 5; // **vp; 로 avp[0]을 읽지는 못한다
void **vp = avp; //avp배열의 포인터를 대입
avp[0] = &i;
printf("%d", *(int *)*vp); // 5
'C' 카테고리의 다른 글
15회차 : 배열 포인터, 배열과 문자열 (0) | 2017.02.26 |
---|---|
14회차 : 첨자 연산, 포인터 배열 (0) | 2017.02.23 |
12회차 : void형 포인터 (0) | 2017.02.18 |
11회차 : 포인터 연산 (0) | 2017.02.18 |
10회차 : 배열 (0) | 2017.02.11 |