티스토리 뷰

#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 하고 대입을 한 뒤, 두 번째 열부터 동적배열 할당해제를 해주면 오류가 발생하지 않는다.

댓글
반응형
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함