malloc and realloc functions in C / C++ - Out4Mind

사진 출처: Out4Mind


C언어에는 메모리 할당 및 해제에 대한 4가지 함수가 stdlib.h 라이브러리에서 제공되고 있다.

malloc, calloc, free, 그리고 realloc 함수이다.


이 4가지 함수들 중

realloc 함수의 동작 원리에 대해서 자세히 살펴보고자 한다.


realloc 함수의 프로토타입은 다음과 같다.


void * realloc(void * ptr, size_t size);


realloc 함수는 포인터에 할당된 메모리의 크기를 늘리거나 줄이는 일이 필요할 때 사용하는 함수이다. realloc함수는 호출 시 두 개의 인자를 취하며, 재할당된 영역의 포인터를 반호나한다. 첫 번째 인자는 기존 할당된 메모리에 대한 포인터이며, 두 번째 인자는 요청할 메모리의 크기다. 재할당된 메모리의 크기는 기존 메모리의 크기와 다르며 반환 값은 재할당된 메모리의 포인터다.


 두 개의 인자가 변함에 따라 realloc은 어떻게 작동할까? 아래의 표를 참고하면 한 눈에 이해할 수 있을 것이다.


첫 번째 매개변수 

두 번째 매개변수 

동작 

null 

 임의의 size

 malloc 함수와 동일하다. 

null 아님 

 0

*** 기존 메모리를 해제한다.

null 아님 

 기존 메모리 크기보다 작은 size

 현재 메모리 영역을 사용하여 작은 메모리 영역을 할당한다.

null 아님

 기존 메모리 크기보다 큰 size

 현재 메모리 영역을 사용하거나, 다른 메모리 영역을 사용하여

보다 더 큰 메모리 영역을 할당한다.


오브젝티브-C는 대중적이고 이식성이 뛰어난 C언어를 우아한 스몰토크(Smalltalk)언어에 결합시키려는 목적으로 만들어진 언어입니다. 

이번 포스팅에서는 Xcode로 간단한 Hello World를 출력해 볼것입니다. Xcode에서 프로젝트를 만드는 방법과 오브젝티브-C언어를 이용해서 Hello World를 출력하는 방법에 대해서 설명을 드리고자 합니다.


포스팅하는 지금, Xcode 버전은 5.0.2 입니다.


1. Xcode를 앱스토어에서 다운받고, 실행시킵니다.



2.Xcode를 실행하였다면, "Create a new Xcode project" 버튼을 클릭해주세요.


3. 템플릿은 다음과 같이 선택하세요.

OS X > Application > Command Line Tool


4. 간단하게 프로젝트에 대한 필수 내용(제목 등)을 적습니다. 



5. 왼쪽 스테이터스 바에 main.m 등과 함께 프로젝트 파일의 구조, Hierarchy를 확인할 수 있습니다.



6. main.m 파일을 열고 아래와 같은 소스를 입력합니다.





7. 소스 코드 작성을 완료하였다면 결과물 확인을 위해 "실행"을 합니다.



8. 아래의 Output 윈도우에서 결과물을 확인합니다.



끝~! 어때요? 참 쉽죠?

+ Recent posts