메모리할당(2)
-
C 언어 | 배열의 크기 조정하기
학습 목표배열의 크기를 조정하는 코드를 작성할 수 있다. 컴퓨터 안의 메모리는 마치 사물함과 같다. 한 번 사물함의 개수를 정한 이후에는 공간이 모자란다고 해서 주변의 사물함을 마음대로 더 사용할 수 없다. 배열을 정의할 때도 마찬가지다. 이미 일정한 크기가 할당되어 있는 상황에서 그 크기를 늘리는 일은 단순하지 않다. 배열의 크기 조정하기1. for 루프를 사용해 값 복사배열의 크기를 키워야 한다면 어떻게 해야 할까. 배열이 저장된 메모리 위치 옆에 메모리를 덧붙이자 생각할 수 있지만, 그곳에는 다른 데이터가 저장돼 있을 수 있다. 따라서 안전하게 배열의 크기를 키우기 위해서는 새로운 공간에 큰 크기의 메모리를 다시 할당하고 배열의 값을 하나씩 옮겨줘야 한다. 이 과정은 배열의 크기(n)만큼 시간이 소..
2021.02.26 -
C 언어 | 메모리 할당과 해제
학습 목표메모리를 할당하고 해제할 수 있다. 메모리 할당과 해제malloc() 함수를 이용하여 메모리를 할당한 경우 저장한 값이 필요가 없어지면 쓰레기 값으로 남는다. 이를 메모리 누수(memory leak)라고 한다. 메모리 누수를 방지하기 위해서는 free() 함수를 이용해 메모리를 해제해줘야 한다. 메모리 누수에 관련된 예제를 보자. 프로그램을 살펴보자.f 함수를 보면 포인터 x에 malloc() 함수를 사용해 메모리를 할당한다.메모리의 크기는 int 형(4바이트)의 10배로 40바이트를 할당한다.x의 10번째 인덱스에는 0을 할당한다.main 함수에서는 f 함수를 실행시키고 0을 반환한다. 이 프로그램의 메모리 누수를 확인해보자. valgrind라는 메모리 누수 확인 프로그램을 사용하면 문제를 ..
2021.02.22