Không thể đọc giá trị con trỏ trong c++

Xin chào mọi người, mình có viết một chương trình nhỏ để giải giải Soduku 9x9. Trong khi làm mình bị mắc một lỗi không thể đọc giá trị từ con trỏ null. Mình đã tìm kiếm trên internet các trường hợp tương tự nhưng vẫn không thể hiểu được lý do chương trình của mình gặp lỗi. Và không phải lần nào chạy chương trình cũng bị lỗi này. Rất mong mong người chia sẻ kinh nghiệm để debug lỗi này, cám ơn mọi người rất nhiều :
Meassage lỗi :

First-chance exception at 0x0115BAEA in Soduku9x9.exe: 0xC0000005: Access violation reading location 0x00000000.
Unhandled exception at 0x0115BAEA in Soduku9x9.exe: 0xC0000005: Access violation reading location 0x00000000.

Đoạn code lỗi :

//Tìm số các điểm cần điền
int **zero = new int*[2];
numAvaiableCount = new int[numNeeded];
stepMark = new int[2];
int **numAvai = new int*[numNeeded];
//Khai báo
zero[0] = new int[numNeeded];
zero[1] = new int[numNeeded];

//Gán 0 cho các phần từ của ma trận đánh dấu vị trí...
for (size_t i = 0; i < numNeeded; i++){
	stepMark[i] = 0;
	numAvaiableCount[i] = 0;
	numAvai[i] = new int[N];
	for (int j = 0; j < N; j++)
	{
		numAvai[i][j] = 0;
	}
	cout << "\n";
	
}
for (size_t i = 0; i < numNeeded; i++){
	for (size_t j = 0; j < N; j++)
	{
		cout << numAvai[i][j] << " ";
	}
	cout << "\n";
}

2 biến này bạn đã khai báo phía trên chưa?

Mình có khai báo rồi bạn ạ.

int *numAvaiableCount;
int *stepMark;

Code hơi dài nên mình ko post hết :slight_smile:

Đưa full code lên đi bạn. Không biết biến này khởi tạo giá trị chỗ nào.

2 Likes

Cám ơn bạn, mình sẽ edit lại post :slight_smile:

chỗ này bạn khai báo 2 vị trí.

trong vòng lặp bạn gán

Không biết khi i >= 2 thì có bị sao không nhỉ?

2 Likes

Ngàn lần cám ơn bạn :smile: cái này mình đặt sai. Chính xác phải là :

stepMark = new int[numNeeded];

Chắc do nguyên nhân là ở đây. Mình soát lại cả buổi rồi mà không ngờ lại sai lỗi này. Cám ơn bạn rất nhiều :wink:

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?