30/09/2018, 19:37

Code bị crash khi chạy nhưng debug thì bình thường (Dumping stack trace to stackdump)

Chào mọi người,
Mình có viết một thư viện xử lý số lớn. Nhưng đang bị bế tắc ở một lỗi rất khó hiểu - gán số 1 nguyên dương gồm 24,40,56,72,… chữ số cho mảng là crash ngay lập tức và ko in ra gì. Nhưng debug từng dòng thì rất ok. In ra đúng kq.
Khi chạy trên DevC++ sẽ crash và hiện bảng lỗi thì có ghi Fault Module Name: StackHash_xxxx
Còn khi compile và chạy bằng Cygwin thì bị lỗi Dumping stack trace to stackdump.
Sau một hồi debug thì phát hiện ra strcpy(tmp,right+l)line 85 trong hàm bigAssign() gây crash. Chỉ cần xóa là ok ngay.
Mình đã thay bằng memcpy nhưng ko đc.
Kể cả viết lại hàm strcpy cũng crash nốt.

Đã xong đoạn gạch! Thanks gió! xD

Bây giờ thì mình bị dính lỗi, nhập 1 dãy số cực dài là nó bị crash như trên. Mặc dù vẫn in ra kq
Đang debug
Ai rảnh rỗi or cá hứng thú thì phụ mình một tay nhé!

EDIT: Nếu mình debug, sẽ bị SIGTRAP ngay free(tmp) trong hàm bigAssign() và ko chạy tiếp đc.

Code:
http://paste.ofcode.org/7MwRNmMBzDWgRriKVCQF7z

Xin cảm ơn mọi người.

Gió viết 21:43 ngày 30/09/2018

cstring phải có kí tự ‘\0’ kết thúc xâu nên malloc phải >=len+1.
Hàm strlen có dpt là o(n) nên dpt của lúc chuyển xâu -> bigInt là lớn cỡ n^2. Hạn chế tối đa strlen trong for và thay = một biến khác,khi thay đổi chiều dài thì tính lại biến đó

*grab popcorn* viết 21:45 ngày 30/09/2018

ko ngờ là lại bị đúng như gió nói.
Shock toàn tập
Cảm ơn gió nhiều nhé
Làm chiều giò mò mẫn muốn chết :((

Bài liên quan
0