꾸벅
65
2021-11-26 04:56:08
1
100

C언어 동적메모리 할당 질문있습니다!


동적메모리 할당이 배열과 같이 크기는 100인데 정작 들어가는 데이터의 수는 10개 이러면 90개의 공간이 남는 메모리 낭비를 커버할수 있는 함수로 배웠습니다.


int *pi;

pi = (int *)malloc( 25*sizeof(int) )


1. 이렇게 선언하면 100byte 가 할당되고 4바이트 단위로 25개의 연속된 정수형 배열처럼 선언이되면

여기서 입력으로 scanf 와 같이 입력을 하였는데 5개정도 입력을 하여 20byte만 썼다면 나머지 80byte는

어떻게 되는것인가요. 메모리 누수를 막기위해서 동적메모리 할당을 하는데 이미 100byte를 선언해놓고 정작 데이터 입력을 20byte만 입력하고 사용할꺼면 80만큼의 손해가 아닌가요 ?

2. 또 하나 궁금한것이 프로그램 작성하면서 들어올 데이터의 크기가 얼마인지 모를수가 있으니 동적할당을 한다고도 들었는데 크기할당을 위처럼 25*sizeof(int) 해버리는데 이러면 정적메모리 공간할당할때처럼 어림잡아 이정도 해볼까? 하는식의 ary[100] 가 되지않나요?

0
  • 답변 1

  • mirheeoj
    13k
    2021-11-26 06:05:54

    할당하고 저대로만 사용하시는거면 말씀하신게 맞습니다. 다만 그렇게만 쓰이는건 아닙니다. 할당된 메모리를 반납하고 더 큰 사이즈나 더 작은 사이즈로 재할당받을 수도 있고, 링크드 리스트, 벡터 등 수많은 자료구조를 통해 해당 작업을 자동화할 수도 있기 때문입니다. 

  • 로그인을 하시면 답변을 등록할 수 있습니다.