동적 메모리 할당
- 동적 메모리 할당이 필요한 이유
- 실행 시간에 결정된 크기 만큼의 메모리를 할당하고 싶을때
- 자동으로 메모리를 해지 하지 말고, 사용자가 원할때 명시적인 해제를 위해
- C 언어
- malloc으로 할당하고 free로 해지
- malloc 사용시 주소를 원하는 타입으로 캐스팅 필요
- C++ 언어
- new로 할당하고 delete로 해지
- 원하는 타입의 주소를 리턴하므로 캐스팅 불필요
- new 배열로 할당한 경우 delete[]로 해지(배열을 delete로 해지 시 동작에 대해서는 알수없음 undefined)
- malloc은 생성하지 호출하지 않지만 new는 생성자를 호출함
int main()
{
int cnt = 0;
std::cout << "학생수 ? >>";
std::cin >> cnt;
// 학생수 만큼의 메모리 할당이 필요하다.
int score[cnt]; // g++ ok, vc++ error
// C Style
int* p1 = (int*)malloc(sizeof(int) * 10);
free(p1);
// C++ Style
int* p2 = new int; // int 사이즈 할당(4Byte)
delete p2; //
int* p3 = new int[10]; // int 사이즈 배열 할당(4Byte * 10)
delete[] p3; // new Array 타입으로 생성 시 delete[]로 해지
}
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ Explicit Casting (0) | 2019.05.06 |
---|---|
C++ reference 변수 (0) | 2019.05.06 |
C++ 함수 특징 #2 (0) | 2019.05.05 |
C++ 함수 특징 #1 (0) | 2019.05.05 |
C++ 제어문(if, switch)과 반복문(for) (0) | 2019.01.16 |