30/09/2018, 18:13

Unhandled exception at 0x00226247 in extends.exe: 0xC0000005: Access violation reading location 0x00000000."

Mời mọi người xem code của mình trước:

// Hàm remove 1 phần tử trong linkedlist
Error_code List<List_entry>::remove(int position, List_entry &x) {
	if (head == NULL) {
		return fail;
	}
	if (position < 0 || position >= count) {
		return rangeerror;
	}
	Node<List_entry> *pPos = head;
	Node<List_entry> *pPre = head;
	int i = 0;
	while (i < position - 1) {
		pPre = pPre->next;
		i++;
	}
	pPos = pPre->next;
	x = pPos->entry;
	pPre->next = pPos->next;
	delete pPos;
	count--;
	return success;
}

int main() {
	List<int> list;
	list.insert(0, 12); // chèn phần tử vào linkedlist
	list.insert(1, 5);
	list.insert(2, 79);
        int a = 0;
	list.remove(1, a);
	list.printAll(); // in list ra sau khi remove
	cout << endl << "Number removed: " << a << endl; // in giá trị của phần tử đã remove
        return 0;
}

Code mình chạy đúng, nhưng khi chạy nó warning như sau:

“Unhandled exception at 0x00226247 in extends.exe: 0xC0000005: Access violation reading location 0x00000000.”

Chả biết đây là cái gì nữa, debug thì nó hiện mũi tên vào cái dòng x = pPos->entry; nhưng rõ ràng mình đã khai báo pPos rồi và đã cho pPos = pPre->next rồi mà?

viết 20:22 ngày 30/09/2018

Debug xem có phải pPos bằng 0x0 (NULL) không?

Bài liên quan
0