티스토리 뷰
#include <iostream>
int main() {
// 10x10 동적배열 생성
int** arr = new int* [10];
for (int alloc = 0; alloc < 10; alloc++)
arr[alloc] = new int[10];
// 배열을 전부 0으로 초기화
for (int index_d = 0; index_d < 10; index_d++)
for (int index_w = 0; index_w < 10; index_w++)
arr[index_d][index_w] = 0;
int a[10] = { 1,1,1,1,1,1,1,1,1,1 };
arr[0] = a;
// 배열 출력
for (int index_d = 0; index_d < 10; index_d++) {
for (int index_w = 0; index_w < 10; index_w++)
std::cout << arr[index_d][index_w] << ' ';
std:: cout << std::endl;
}
// 배열 할당 해제
for (int i = 0; i < 10; i++)
delete[] arr[i];
delete[] arr;
}
위와 같이 동적 2차원 배열을 생성한 후에 1열을 다른 배열을 생성하여 교체해봤다.
실행을 하니 다음과 같은 런타임 에러가 뜨는 데,
Expression: _CrtisValidHeapPointer(block) 이라는 부분이 보인다.
배열 할당 해제에 관한 오류로. 이미 배열 첫 열을 다른 배열로 교체 했지만, 첫 번째 열을 포함한 2차원 동적 배열을 할당 해제하려고 하니 오류가 발생한 것이다.
위의 경우엔 첫 번째 배열을 먼저 delete 하고 대입을 한 뒤, 두 번째 열부터 동적배열 할당해제를 해주면 오류가 발생하지 않는다.
'Programming Languages > C++ & Algorithm' 카테고리의 다른 글
재귀 함수를 이용한 부분 집합 생성 알고리즘 (0) | 2020.09.18 |
---|---|
[Algorithm] ios::sync_with_stdio(0); C++ 입출력 속도 (0) | 2020.09.17 |
[C언어] 난수 생성하기 _ rand(), srand() 함수 활용 (0) | 2018.10.21 |
[C언어] 포인터 변수 기초 (0) | 2018.10.17 |
[C언어] #define 활용 - 매크로 (0) | 2018.10.15 |
댓글