01/10/2018, 13:35
Lỗi push stack c++
Em làm bài tập lập trình C++ mô phỏng stack thì gặp 1 vấn đề khó hiểu mong anh chị giải thích hộ em!
khi em stack push từ 0-9 thì:
(1)
stack.push(i);//với i là con số 10 dòng
và
(2)
while(i< 10)
{
stack.push(i);
i++;
}
thì (1) ko có chuyện gì xảy ra hết,(2) thì lại có chuyện thông báo code dump? cho em hỏi thực sự chuyện gì đang xảy ra.
build trên ubuntu.
code main:
CStack stack(0);
stack.Push(1);
stack.Push(2);
stack.Push(3);
stack.Push(4);
stack.Push(5);
stack.Push(6);
stack.Push(7);
stack.Push(8);
stack.Push(9);
char i = 0;
while(i < 10)
{
stack.Push(static_cast<int32_t>(i));
++i;
}
Bài liên quan
Đó chỉ là code chạy, còn code cài đặt nữa.
Lỗi do code của bạn chứ đâu. Đưa implementation của Stack lên coi nào.
Ham push
ham khoi tao: MAX 10
co gi may anh chi giup em.
Dự là MAX = 10 cắm breakthru vào chỗ counter là ra ngay.
Bạn đưa code lên đâu đó, ví dụ cpp.sh, rồi lấy link cho mọi người xem thử.
Link:
main.cpp: https://ideone.com/G4LA8x
CStack.hpp: https://ideone.com/8XSWuY
CStack.cpp: https://ideone.com/l7CYPI
Không biết mình có hiểu sai vấn đề hay không, nhưng mình thấy bạn đã đẩy 10 giá trị “bằng tay” vào trước nên dĩ nhiên stack đã đầy, rồi bạn lại đẩy thêm 10 giá trị bằng
while
thì nó báosegmentation fault
là đúng rồi :vStack không thể “co dãn” mà cũng không kiểm tra full ở hàm
Push
nữa :vHóa ra hai đoạn mã trên chạy liên tiếp mà ở trên thớt viết cứ như hai trường hợp khác nhau vậy.
Try catch nên viết cả catch everythings (…) và log ra FUNCTION với LINE sẽ dễ debug hơn. Code C++ theo java là tốt nhất