날마다 새롭게 또 날마다 새롭게

C언어의 메모리구조과 동적할당 본문

프로그래밍/C / C++

C언어의 메모리구조과 동적할당

아무유 2012. 2. 12. 21:22
프로그램의 실행을 위해서 사용하는 메모리 공간은 데이터 영역, 힙영역, 스택영역 세 가지로 나뉜다.

1)데이터 영역: 전역변수, static변수
2)힙 영역: 프로그래머 할당 ( ->메모리 동적할당 )
3)스택 영역: 지역변수, 매개변수

메모리 할당
정적 할당 : 스택과 데이터 영역에 메모리 할당 (컴파일 타임에 메모리 크기 결정)
동적 할당 : 힙 영역에 메모리 할당 (런 타임에 메모리 크기 결정)

■ malloc 함수
malloc 함수는 동적으로 메모리를 할당하는 함수이다.

void* malloc(size_t size) 

 성공 시 할당된 메모리의 첫 번째 주소 리턴, 실패 시 NULL 포인터 리턴..

■ free 함수
free 함수는 동적으로 할당한 메모리를 해제하는 함수이다.

void* free(void* block)

리턴값 없음.

※ C++ 메모리 동적 할당 시, new와 delete를 사용한다.
c++는 기본적으로 클래스 구조로 되어 있다. 따라서 객체가 만들어질 때, 생성자를 소멸될 때, 소멸자를 호출해야 하는데 C언어에서 사용하는 malloc과 free는 생성자와 소멸자를 호출하지 않음으로 c++에서 메모리를 동적으로 할당할 때는 new와 delete를 사용해야 합니다.

■ new 함수
C++에서 동적으로 메모리를 할당하는 함수는 new 이다.

int* ptr = new int; 


■ delete 함수
C++에서 동적으로 메모리를 해제하는 함수는 delete 이다.

delete ptr; 


Comments