안녕하세요.
C++ 에서 2차원 배열을 동적으로 할당하고, 해제하는 방법입니다.
아래 코드에서는 string.h 를 inclue 하는데요, 메모리 관련 함수이면서 string.h 에 포함된 점이 특이합니다.
memory.h 를 사용해도 된다지만 string.h 가 표준이라고 합니다.
StakOverflow : How do I declare a 2d array in C++ using new?
링크의 답변 중에는 2차원 배열을 하나의 memory block 에 할당하는 방법(포인터들의 크기만큼 메모리 절약)에 대한 답변과,
new - delete 보다는 std::vector<int> 를 사용하라는 답변도 있습니다.
#include <string.h> // memset 함수 사용을 위해 include
/* 메모리 할당 */
int **arr = new int*[sizeY];
for(int i = 0; i < sizeY; ++i) {
arr[i] = new int[sizeX];
memset(arr[i], 0, sizeof(int)*sizeX); // 메모리 공간을 0으로 초기화
}
/* 메모리 해제 */
for(int i = 0; i < sizeY; ++i) {
delete [] arr[i];
}
delete [] arr;
이상으로 C++ 에서 2차원 배열을 동적으로 할당하고, 해제하는 방법을 살펴 보았습니다.
도움이 되었기 바랍니다.
'프로그래밍' 카테고리의 다른 글
windows 7 IIS 설치방법 (0) | 2013.11.10 |
---|---|
[Notepad++] 맞춤법 검사 기능 끄기 (7) | 2013.09.29 |
[C/C++] error LNK2001, LNK1120 (0) | 2013.08.29 |
[C++] 함수 선언 뒤의 const 키워드 (2) | 2013.08.29 |
[C++] 다른 인스턴스의 private member 에 접근하기 (0) | 2013.08.28 |