해결된 질문
작성
·
95
0
원래는 malloc하고 memcpy를 모를때는 반복문으로 복사하고, 이후 free하고 다시 새로 malloc한 주소값을 대입하였습니다.
이번 강의에서 realloc을 배우고 이렇게 바꿀 수 있었습니다.
그러면 실제로 동적 배열 만들때는 주로 realloc을 사용할 것 같은데, 강사님께서 realloc을 쓸일이 거의 없다고 하셨습니다.
설명해주신 미리 할당을 받아두고 memory pooling을 구현하기 때문인가요?
아니면 대부분 동적이 아닌 예상할 수 있는 수치의 고정된 크기로 잡을 수 있기 때문에 realloc할 일 조차 없기 때문인가요?
그도 아니면 c에도 동적 배열을 사용하기 위한 라이브러리가 있어서 인가요?
항상 양질의 강의 제공에 감사드립니다.
답변 1
1
우선 보여주신 모드 조작은 어떤 의미로 만든 코드인지 알 수 없으나 일반적이지 않은 코딩 형태라 할 수 있겠습니다. 그리고 '동적 배열'이라는 표현은 C언어서 보이는 일반적 표현이 아닙니다. C언어에서는 통상 '동적 할당 메모리'라고 합니다. 배열은 메모리를 접근하기 위한 수단에 해당하는 문법일 뿐 동적 할당된 것이든 정적 메모리든 상관하지 않습니다.
realloc()을 사용할 경우가 흔치 않은 이유는 생각하시는 것처럼 대량의 메모리가 필요할 때 직접 관리할 목적으로 미리 충분한 양을 받은 후 사용하는 경우가 성능상 유리하기 때문입니다.
Java를 공부하신 후 C언어를 배우시는 것으로 추측됩니다. C언어에는 '동적 배열'이라는 용어가 없다고 생각하시는 편이 이해해 도움이 될 것 같습니다. 참고하시기 바랍니다. 😄
감사합니다!!