C.5-1 동적할당 malloc / free

lsw·2021년 4월 15일
0

C

목록 보기
6/9
post-thumbnail

1. 프리뷰

전역변수, 지역변수의 단점에 관하여

  1. 전역변수(global variable)의 단점
#include<stdio.h>

int num; // 전역변수 선언

int main()
{
   num = 10; // 초기화1
   printf("%d", num);
   num = 20; // 초기화2
   printf("%d", num);
   return 0;
}
  • 전역변수는 2회 이상 초기화 시 이전 값에 새로운 값이(동일 주소는 맞으나..) 덮어 쓰이는 원리이다. 한마디로 일회용이란것
const int num=20; // 전역변수 선언

int main()
{
  int num=30;
  printf("%d", num); // 30 출력
  return 0;
}
  • 또한 함수 내부 지역변수(local)에 가리워진다.
  1. 지역변수의 단점
#include <stdio.h>
#include <string.h>

void function_1(char * str, int len);

int main()
{
   char name[30];
   int len = sizeof name / sizeof (char);
   function_1(name, len);
}

void function_1(char * str, int len)
{
    fputs("Enter the str : ",stdout);
    fgets(str, len, stdin); // 에러 발생
    puts(str);
}
/* name 지역변수는 main 함수 작동시 스택에 쌓였다가 버려지기에 함수 인자로 활용 시 
   주소값으로 주어져야 한다. 범용성이 떨어진다는 얘기.
  • 범용성이 없다.

2. 해결책

내가 원할때 'stdlib.h'의 표준함수 malloc을 통해 메모리공간을 할당하고, 또 내가 원할때 표준함수 free를 통해 공간을 비울 수 있다. 변수의 생존기간을 내 마음대로 조작할 수 있다는 것!!

자세한 활용법은 다음 포스트에

profile
미생 개발자

0개의 댓글