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à?
Bài liên quan
Debug xem có phải pPos bằng 0x0 (NULL) không?