동적 메모리 관리, 동적 메모리 할당

(2020-01-13)

동적 메모리 관리 함수, malloc, calloc, free()

1. 동적 메모리 관리(할당,해제)       ☞ 힙 메모리, 스택 메모리 참조컴파일메모리 공간을 확정하지 않고, 실행시 동적으로 처리


2. [C 언어]  동적 메모리 관리(할당,해제) 함수 (stdlib.h)
     
  ㅇ malloc()  : 실행중에 동적으로, 1개 값 형식으로, 메모리 공간(힙 메모리)을 할당 
     - 인수 : 할당할 메모리 크기를, 바이트 수로 전달
     - 반환 : 할당된 메모리 공간의 첫 바이트의 포인터를 반환 (void *)
        . 만일, 메모리 부족 등으로 할당 실패시, NULL을 반환
        . 항상, (void *)을 반환하므로, 캐스트 연산자를 써야 함
     - 변경 : 못함
        . 한 번 할당된 공간 크기 값들은 안 바꿈
        . 즉, 할당 만 가능, 초기화/변경은 할 수 없음

     - 例)
        . (int *) malloc (100*sizeof(int)); // 100개 정수 크기의 바이트 수
        . (float *) malloc (sizeof(float)); // 1개 실수 크기의 바이트 수

  ㅇ calloc()  : malloc과 유사하나, 2개 값 형식으로, 메모리 공간을 할당
     - 인수 : (개수,사이즈) 형식으로 전달받으며, 할당된 공간의 값을 모두 0으로 초기화
        . 따라서, 배열을 할당하고, 이를 모두 0으로 초기화 할 때는, calloc를 쓰면 편함

  ㅇ free()    : 이전 할당된 메모리 공간의 해제

  ㅇ realloc() : 이전 할당된 메모리 공간 크기 조정


3. [C++ 언어]  동적 메모리 관리(할당,해제) 연산자C 언어와 달리, 동적 메모리 할당/해제를 함수가 아닌 연산자를 사용
     - C 언어는, malloc()/free() 함수를 사용
        . 한편, malloc()은 할당 만 가능, 초기값 부여는 불가
     - C++ 언어는, 연산자를 사용하므로, 굳이 별도 헤더 파일을 포함시킬 필요 없음
        . new 및 delete 연산자

  ㅇ (할당 형식) : 포인터 = new 자료형(초기값);
     - 지정한 자료형의 크기 만큼 메모리를 할당하여 그 위치를 가리키는 포인터를 리턴(반환)함
     - 할당 실패시에는, NULL 값을 리턴함
     - 만일, 할당과 동시에 초기화하려면, 자료형 뒤 괄호()를 부가하여 그 안에 초기값을 지정함
     - 한편, C 언어의 malloc 함수는, 초기화는 할 수 없고, 할당 만 가능

  ㅇ (해제 형식) : delete (new가 리턴한 포인터);


[C 함수] 1. C 함수 2. C 함수 종류 3. C 문자열 함수 4. C 동적 메모리 관리 함수 5. C 파일 처리 함수 6. C 파일 포인터
  1.   기술공통
  2.   기초과학
  3.   진동/파동
  4.   방송/멀티미디어/정보이론
  5.   전기전자공학
  6.   통신/네트워킹
  7.   정보기술(IT)
        1. 정보기술
    1.   전산기초
    2.   컴퓨터구조
    3.   프로그래밍
          1. 프로그램, 프로그래밍
      1.   프로그래밍 언어론
      2.   프로그래밍 방법론
      3.   객체지향 프로그래밍
      4.   자료표현코드
      5.   자료구조
      6.   알고리즘
      7.   시스템 소프트웨어
      8.   프로그래밍언어 종류
            1. 프로그래밍 언어
        1.   C
              1. C 언어
              2. C 기초 문법
              3. C 연산자
          1.   C 언어 컴파일
          2.   C 변수,자료형
          3.   C 상수,문자,문자열
          4.   C 함수
            1.   1. C 함수
                2. C 함수 종류
                3. C 문자열 함수
                4. C 동적 메모리 관리 함수
                5. C 파일 처리 함수
                6. C 파일 포인터
          5.   배열,포인터
          6.   구조체,공용체
        2.   C++
        3.   자바(Java)
        4.   자바스크립트
        5.   PHP
        6.   파이썬
        7.   (기타 언어)
      9.   프로그래밍 기타일반
    4.   데이터베이스
    5.   소프트웨어 공학
    6.   운영체제
    7.   정보보호/보안
    8.   IT 기타기술
  8.   공학일반(기계,재료등)
  9.   표준/계측/품질
  10.   기술경영

 
        최근수정     요약목록     참고문헌