티스토리 뷰
동적메모리할당
- 변수를 선언하는 대신 프로그램의 요청으로 메모리를 할당
- dynamic memory allocation
- malloc 을 호출하여, 동적메모리 할당을 요청하면 요청하는 요구하는 크기 메모리 할당
malloc 함수
- int *p
- p=(int*)malloc(40)
- (int *) 부분은 malloc이 반환하는 주소는 타입이 업는 주소(void *)이다. 정수들을 저장하기 위해 이것을 int * 로 변환
- 할당받을 크기를 byte단위로 지정. 여기서 10개의 정수를 저장하기 위해 40바이트를 요청하였다.
int * array=(int *)malloc(4*sizeof(int));
int * tmp=(int *)malloc(8*sizeof(int));
int i;
for(i=0;i<4;i++)
tmp[i]=array[i];
array=tmp;
위와같이 배열을 확장시킬수있음.
엄밀히 말하면 확장시킨 임시배열에 기존 값들을 넣고 기존배열에 다시 넣는것.
좋은코드는 아님.
배열을 위와 같이 확장시키고,배열의 크기를 키우는일이 필요하다면
int array[4]같이 처음부터 배열로 선언하지 말고
int *array=(int *)malloc(4*sizeof(int)) 와 같이 선언해야 한다.
'Computer Engineering > 자료구조' 카테고리의 다른 글
자료구조-c 기초문법리뷰(포인터,배열,포인터연산) (0) | 2018.01.29 |
---|
댓글