성균관대 C프로그래밍-동적메모리할당
- 최초 등록일
- 2014.04.23
- 최종 저작일
- 2012.04
- 16페이지/ MS 워드
- 가격 1,500원
목차
1. 실습내용
2. 실습목적
3. 과제 해결방안
4. 코드분석
5. 실행결과
6. 결론
7. Appendix. 전체 코드
본문내용
1. 실습내용
주어진 main2.txt 파일에는 사람들의 이름과 각각의 성적이 쓰여져 있다. 이 파일을 읽어 다음의 항목들을 구해 출력한다.
① 성적의 평균 값, 표준편차 값
② 평균에 가장 근접한 사람의 성적과 이름
③ 편차 범위 내에 있는 사람의 이름 목록
2. 실습목적
① C 프로그램에서 사용되는 memory model(Register, Code, Data, Stack, Heap)을 이해한다.
② Pointer의 역할을 이해한다.
③ Dynamic memory allocation을 통한 memory할당에 대하여 이해한다.
<중 략>
이 것을 종합해보면 “필요한 메모리 크기를 예측할 수 없다는 것”이다. 이 때문에 동적 메모리 할당을 사용하는 것이다. 또한 동적 메모리 할당을 지원하는 영역은 힙 영역인데, 필요한 시점에 필요한 크기만큼 메모리를 할당할 수 있고, 메모리의 시작 주소를 포인터로 저장할 수 있는 장점이 있다.
* 일반적으로 void* malloc(size_t size) / void free(void* p) 함수를 사용한다.
① void* malloc(size_t size)
이 함수는 호출 성공시 메모리의 시작 주소를 반환하고 호출 실패(할당할 메모리 공간이 없는 경우)에는 NULL을 반환한다. 이 때, 반환되는 주소는 void형이다. 즉, 어떤 자료형의 주소인지 결정하지 못한다. 따라서 프로그래머가 필요한 자료형으로 알아서 형변환을 하여 사용해야 한다.
② void free(void* p)
이 함수는 malloc() 함수를 통해 동적 메모리가 할당된 공간을 해제한다. 이 때, 포인터 변수 p가 힙 영역의 시작주소를 가지고 있기 때문에 free(p)는 p에 저장된 시작 주소의 힙 영역을 해제하라는 의미이다. malloc() 함수를 통해 할당된 동적 메모리를 해제하지 않으면 그만큼의 메모리가 낭비되기 때문에 해제를 해 주어야 한다.
참고 자료
없음