본문 바로가기

Dev/Programming

[종합] 메모리 할당

오브씨를 시작한지 어언 반년 .. 내게 메모리 할당이란 alloc 밖에 없었다.

그럴수밖에없는게 어쨌든 ob-c에서는 메모리 할당할때 alloc밖에 안쓰기 때문..

문제는 ob-c의 태생에 대해서 이해하면 생긴다는 것이다.


ob-c는 c++처럼 결국 c에서 파생된 언어이기 때문에 c언어도 혼용해서 사용할수 있는것으로 알고 있다.

(사실 ob-c가 언어라고 보지 않는 관점도 있긴한데, 이점은 파고들면 너무 깊어지니.. 개인적으로는 언어를 구분한다거나, 무슨 언어 개발자 라던가 라는 껍데기는 싫어하는 지라.. 별로 중요치 않게 생각하고 있다.)


이러한 떡밥 아닌 떡밥들에 의해 포스트가 '프로그래밍'카테고리로 들어가게 되었다.


포스트의 결론을 한줄로 먼저 요약해 보자면,

c : malloc / c++ : new / ob-c : alloc 이라는 건데,


c의 메모리 할당을 파고 들면, malloc, calloc, memset, free, realloc 다양한 함수들을 접하게 된다.

그나마 다행인건, 그렇게 다루기 어려운 함수들은 아니다. 그만큼 프로그래밍 기초에 가까운 부분이기도 하고..


하지만 정작 사용하려면, 한번쯤 좀 더 깊이 생각해보고 사용할 일이긴 하다.

나와 같은 경우도 ob-c에서 버퍼연산을 위해 malloc을 사용했다가, 초기화 문제라던가 메모리에 대한 얕은 지식으로 인해 꽤나 고생했기에 OTL..


각 함수들의 기능은 아래의 링크를 참조하는게 훨씬 도움이 될 것 같아서 굳이 따로 설명은 안하겠지만,

프로그래머란 주어진 상황을 잘 인식하고 그 문제를 해결할 수 있는 길을 만들어야 하는데,

그러기 위해서는 이처럼 기초와 같은 부분은 한번씩 살펴보고 가는게 차후 큰 도움이 되어주는것 같다.


상황에 따라 막상 실제 개발에서는 안쓰이는 함수들일지도 모르겠지만, (ob-c만 봐도 alloc으로 다되니까)

다른 소스를 참고한다던가, 좀 더 깊이 있는 부분을 다룰수 있는 상황은 언제든지 오기 때문에,

언어의 태생적인 부분에서부터 기초를 다니고 가야하는건 언젠간 해야할 프로그래머의 몫인것 같다.

(언젠간 이라고 표현한건, 기초를 다지고 시작하면 좋지만, 반대로 기초를 다져놔야 시작할수 있는건 아니라고 생각하기 때문에..)





먼저 글들을 제공해주신 분들께 감사의 인사를 드립니다.


1. [ objective-c 기초 개념 ]  Scott Stevenson 작성 / snowrimp 번역

 : 기초부분에 해당하는 포스트의 경우 이 링크가 매우 자주 들어갈것 같다.. 그만큼 가벼우면서도(?) 개념에 충실한 좋은 번역글이기 때문이다. ob-c 개발이 아닌경우 굳이 볼 필요는 없겠지만..


2. [ malloc의 의미 ] - by. windeer725

 : 딱 필요한 정도의 개념만 잡기에는 충분한 글이었다.


3. [ malloc 사용법 ] - by. mwultong

 : malloc을 자~세~하게 사용하는 방법과 그 이유를 중심으로 작성해주셨다.


4. [ malloc, free, memset 요약 ] - by. 음주코딩

 : 일목요연 하게 위 세가지의 함수를 코드와 함께 설명해주셨다.


5. [ malloc, calloc, realloc 유동 메모리 할당 ] - by. 팥알

 : 크기를 바꾸는 realloc 이라는 함수도 있다는걸 알게 된 글. 간단 심플하면서도 정작 필요한것만 쉽게 알려줬던 글이다.


6. [ malloc vs calloc ] - by. 소흔

 : 최근에 alloc과 관련하여 찾다보니 이러한 유익하고 재미진 글도 보게 되었다. 메모리 할당에 관심있는 분이면 한번쯤 직접 보시는게 어설프게 설명하는것보단 훨씬 나을것 같다. 원하는 정보들을 일일이 검색하고 취합하는것.. 어찌보면 나도 이러한 행태를 원하고 밟고 있는게 아닌가 싶다.