이 영역을 누르면 첫 페이지로 이동
컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

페이지 맨 위로 올라가기

컴퓨터와 수학, 몽상 조금

컴퓨터공학, 딥러닝, 수학 등을 다룹니다.

[5주차] 동적 할당

  • 2020.04.10 15:29
  • 학부 수업/C프로그래밍
반응형

동적 할당Dynamic Memory Allocation

동적 할당이란?

이름 그대로 프로그램이 실행되는 중간에 동적으로 메모리 공간을 할당해 주는 것.

할당 - 사용 - 해제의 3단계로 구성되며, 이 모든 과정을 프로그래머가 명시해줘야 한다.

기본 예제

동적할당을 위한 기본 함수들은 <stdlib.h>헤더에 구현되어 있다.

malloc함수를 활용하면 원하는 만큼의 메모리를 할당받고, 그 시작 주소를 얻을 수 있다. (리턴타입은 void *이다.) 할당에 실패하면 NULL이 반환된다.

#include <stdlib.h>

int main() {
    int *p = NULL; //동적으로 할당된 메모리에 접근하기위한 포인터
    p = (int *) malloc(5*sizeof(int)); //int 변수 5개의 크기만큼 메모리 할당

    p[0] = 1;
    *(p+2) = 2;

    free(p);//메모리 해제
    return 0;
}

동적 메모리 연결

동적으로 할당된 메모리 공간에는 변수명을 붙일 수 없기 때문에 포인터로 사용한다.

(자료형 *)을 malloc앞에 붙여서 원하는 자료형의 포인터로 형변환을 해준 다음 사용하면 된다.

동적으로 고차원 배열 할당

pch = (char **) malloc(3*sizeof(char *));
pch[i] = (char *) malloc(4*sizeof(char));

위 코드를 통해 3x4 이차원 배열을 만들 수 있다.

해제할 때도 두번에 걸쳐 각각 차원마다 따로 해제해줘야 한다.

기타 동적 메모리 할당 함수

calloc(unsigned int num, unsigned int size)

size 크기의 공간을 num 갯수만큼 할당하고 0으로 초기화한다.

realloc(void * ptr, unsigned int size)

동적으로 이미 할당된 ptr의 공간을 size(byte) 크기 만큼 재조정한다. 현위치에서 불가능하면 자동으로 해제하고 새로운 공간에 재할당한다.

반응형

'학부 수업 > C프로그래밍' 카테고리의 다른 글

[7주차] 파일 입출력  (0) 2020.04.10
[6주차] 연산자 함수, 자료형 심화  (0) 2020.04.10
[4주차] 구조체  (0) 2020.04.10
[3주차] 문자열  (0) 2020.04.10
[2주차] 포인터 개요 및 복습  (0) 2020.04.10

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [7주차] 파일 입출력

    [7주차] 파일 입출력

    2020.04.10
  • [6주차] 연산자 함수, 자료형 심화

    [6주차] 연산자 함수, 자료형 심화

    2020.04.10
  • [4주차] 구조체

    [4주차] 구조체

    2020.04.10
  • [3주차] 문자열

    [3주차] 문자열

    2020.04.10
다른 글 더 둘러보기

정보

컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

  • 컴퓨터와 수학, 몽상 조금의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (276)
    • Tech Trend (3)
    • Deep Learning (77)
      • 공부 노트 (21)
      • 논문 리뷰 (44)
      • 논문 스키밍 (1)
      • 영상처리 (11)
    • Engineering (3)
      • Tips (2)
      • Experiences (1)
    • Blog (42)
      • 회고 & 계획 (16)
      • 내 이야기 (8)
      • 리뷰 (3)
      • 군대에 간 공돌이 (9)
      • ML엔지니어 취업 도전기 (1)
      • 여행 (4)
    • 학부 수업 (141)
      • 머신러닝 (16)
      • C프로그래밍 (8)
      • 자료구조 (11)
      • 알고리즘 (17)
      • 디지털시스템 (25)
      • 컴퓨터구조 (11)
      • 확률과 통계 (21)
      • 선형대수학 (14)
      • 이산수학 (18)
      • 데이터시각화 (0)
    • 강의 (9)
      • 딥러닝 기초 (7)
      • Python (2)

공지사항

인기 글

정보

백지오의 컴퓨터와 수학, 몽상 조금

컴퓨터와 수학, 몽상 조금

백지오

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
반응형

나의 외부 링크

  • profile
  • github
  • linkedin

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. © 백지오. Designed by Fraccino.

티스토리툴바