*메모리 할당

 

- 코드영역  : 실행할 프로그램의 코드가 저장되는 메모리 공간

   CPU는 코드 영역에 저장된 명령문을 하나씩 가져다가 실행한다.

 

 

- 데이터 영역 : 전역변수와 static 변수가 할당되는 영역

                    프로그램 시작과 동시에 할당되어 종료시 까지 남아있는 특징의 변수가 저장되는 영역

 

 

- 힙 영역 : 프로그래머가 원하는 시점에 메모리 공간에 할당 및 소멸을 하기위한 영역

              동적 메모리가 할당되는 부분

 

 

- 스택 영역 : 지역변수와 매개변수가 할당되는 영역

                 함수를 빠져나가면 소멸되는 변수를 저장하는 영역 

 

 

 

 

 

 

 

 

 

 

#동적 할당 메모리의 개념

 

- 프로그램이 메모리를 할당받는 방법

 

1. 정적(static)

2. 동적(dynamic)

 

 

 

#동적 메모리 할당

 

- 실행 도중에 동적으로 메모리를 할당받는 것

 

- 사용이 끝나면 시스템에 메모리를 반납

 

- score = (int *)

  malloc(100*sizeof(int));

 

- 필요한 만큼만 할당을 받고 메모리를 매우 효율적으로 사용

 

- malloc() 계열의 라이브러리 함수를 사용

 

 

 

#void *malloc(size_t size)

 

- size는 byte의 수

 

- malloc()함수는 메모리 블럭의 첫 번째 byte에 대한 주소를 반환

 

- 만약 요청한 메모리 공간을 할당할 수 없는 경우에만 NULL값을 반환

 

 

 

#정적,동적 메모리 할당과 해제

 

 

 

 

 

 

 

 

 

#malloc() 함수

 

- 함수 안에서 이름을 입력받아 메인에 출력

 

- malloc() - 헤더파일 : stdlib.h (malloc+사촌)

                            : malloc.h (malloc만 사용)

 

- 힙 영역의 메모리 공간 할당과 해제

 

- 할당 void* malloc(size);

 

/*

malloc함수는 인자로 숫자만 전달받을 뿐이니

할당 되는 메모리의 용도를 알지 못한다.

따라서 메모리의 포인터 형을 결정 못한다.

형변환의 과정을 거쳐서 할당된 메모리의

주소값을 저장!

*/

 

 

 

#free() 함수 : malloc()함수로 사용한 메모리 해제

 

- void free(포인터 변수명);

 

- 메모리 해제를 하지 않으면 메모리 부족과 같은 문제를 일으킬 수 있으니 꼭 해제하는 습관을 들이자.

 

 

 

 

#malloc() 함수 사용 예

 

 

 

*정수

 

 

 

 

 

 

 

 

 

*문자

 

 

 

 

 

 

 

 

 

 

*학생 점수를 입력 받아보기

 

 

 

 

 

 

 

 

 

#malloc() 함수에 의한 배열 공간 할당

 

 

 

 

 

 

 

 

 

 

 

#calloc()함수

 

 

 

 

 

 

 

 

 

 

 

 

 

#realloc() 함수

 

 

 

 

 

 

 

 

 

 

#자기 참조 구조체 정의

 

*자기 참조 구조체(self reference struct)

 

- 구조체의 멤버중의 하나가 자기 자신의 구조체 포인터 변수를 갖는 구조체

 

 

*구조체 selfref

 

- 멤버로 int형 n과 struct selfref *형 next로 구성

 

- 즉 멤버 next의 자료형은 지금 정의하고있는 구조체의 포인터형

 

- 구조체 selfref는 자기 참조 구조체

 

- 구조체의 멤버중의 하나가 자기 자신의 구조체 포인터 변수

 

- 구조체는 자기 자신 포인터를 멤버로 사용할 수 있으나 자기 자신은 사용 불가능

 

 

 

 

 

#구조체를 이용한 동적 할당

 

 

 

 

 

 

 

 

#두대의 자동차를 입력받아서 메모리 공간을 할당받고 정보를 출력받는 프로그램

 

 

 

 

 

+ Recent posts