1. 개요

 먼저 동적배열이란 뜻은 프로그래머가 크기를 설정한 배열 또는 프로그램 자체에서 크기를 조절하는 배열등으로 

설명할 수 있다. 예를 들어 만약 프로그램 내부에서 배열을 사용해야 하는데, 이 때 배열이 어느정도의 크기를 가질지

모른다면 우리가 흔히 사용하는 arr[100]과 같은 정적 배열 선언 방식은 사용할 수 없다. 이 때 사용하는 방법이 가변

자료구조인 리스트나 또는 동적배열을 사용한다. 동적배열은 당연히 동적할당을 기반으로 만들어진다. 이게 첫 번째

문제다. 그리고 2번째 문제가 있다. 만약 크기100의 동적배열을 사용하다가 데이터 인풋이 이 배열의 크기를 초과할 때,

현재 데이터를 유지하면서 데이터의 인풋에 맞게 배열의 크기를 더 늘리고 싶다. 이 때, 사용되는 방법 역시 동적배열이다.


2. 문제

 데이터의 수에 따라 크기가 2배로 증가하는 동적배열을 작성하시오. 단, realloc() 함수를 사용하자.


3. 코드

3-1) 메인


3-2) realloc 동적배열 함수


3-3) 출력



4. 해설

 딱 3개만 기억하자.

 (1) realloc() 함수를 사용할 때에는 반드시 메모리 부족으로 실패할 경우를 대비해서 주소를 저장하자! (면접때 물어봄)

 (2) void* 형은 간접 참조와 포인터 연산이 불가능하며, 나중에 반환해야 하는 포인터 주소 저장을 위해서만  사용.

 (3) malloc(), realloc(), memset() 등등 메모리 연산의 크기를 지정할 때에는 항상 sizeof(type)*size가 크기이다.





+ Recent posts