- Theo bài đăng từ năm 2008 (Tôi không thể tìm thấy ngay bây giờ), glibc heap check không hoạt động trong môi trường đa luồng. Vẫn còn tình hình trong năm 2010?
- Kiểm tra heap có được bật theo mặc định không? (gcc 4.1.2)? Tôi không đặt MALLOC_CHECK_, không biết gọi mcheck(), nhưng đôi khi vẫn nhận được lỗi glibc đôi miễn phí với backtrace. Có lẽ nó được kích hoạt bởi một số cờ biên dịch?
Trả lời
Theo mặc định, không sử dụng malloc_check_ hoặc mcheck(), glibc thực hiện một số kiểm tra nhỏ không làm ảnh hưởng đến hiệu suất, như gọi hai lần miễn phí() trên cùng một đoạn bộ nhớ. Đó là lý do tại sao bạn nhận được một số thông điệp này, nhưng bạn sẽ không có tất cả các thông báo được cung cấp bởi api thay thế malloc mà bạn có thể nhận được bằng cách sử dụng MALLOC_CHECK_ (đang thực hiện nhiều thử nghiệm hơn, nhưng cũng tốn nhiều CPU hơn). Bạn có thể kiểm tra điều này bằng cách kích hoạt một lỗi và thử nghiệm nó có và không có malloc_check_. Ví dụ, đối với một lỗi đơn giản đôi(), tôi nhận được "đôi miễn phí hoặc tham nhũng (trên)" hoặc "miễn phí(): con trỏ không hợp lệ" tùy thuộc vào bất cứ khi nào tôi đặt MALLOC_CHECK_ hay không.
Để trả lời 1/câu hỏi, kiểm tra dựa trên móc malloc vì chúng tồn tại (như 15 năm), và những người không có ý định là chủ đề an toàn.
Nguồn: glibc/malloc/malloc.c, http://sourceware.org/bugzilla/show_bug.cgi?id=9939
- 1. Kiểm tra tính nhất quán của nhiều đối số sử dụng Mockito
- 2. HashMap với kiểm tra tính duy nhất
- 3. Cách tính tổng kiểm tra
- 4. angularjs - bộ kiểm tra kiểm tra
- 5. GADT của kiểm tra
- 6. Radio Button Kiểm tra không kiểm tra
- 7. Backbone.js - Cách tốt nhất để kiểm tra hộp kiểm
- 8. SVN: "Kiểu kết thúc dòng không nhất quán" - Kiểm tra tệp có^M cố ý
- 9. kiểm tra jquery nếu hộp kiểm asp được kiểm tra
- 10. Kiểm tra tính bình đẳng của các mảng trong C#
- 11. Cách dễ nhất để kiểm tra số
- 12. Kiểm tra đơn vị hoặc Kiểm tra chức năng?
- 13. Kiểm tra jQuery cho máy tính bảng?
- 14. jquery validate kiểm tra ít nhất một hộp kiểm
- 15. C++ 11 tính năng kiểm tra
- 16. Kiểm tra thuộc tính lớp python
- 17. Cách tính tổng kiểm tra TCP
- 18. EAN 8: Cách tính số kiểm tra?
- 19. Sử dụng nhanh kiểm tra Kiểm tra với Cabal?
- 20. Kiểm tra giới thiệu
- 21. Cách tốt nhất để kiểm tra tham số chức năng: Kiểm tra null hoặc try/catch
- 22. Cách kiểm tra tính tương đương của các dải
- 23. Kiểm tra tính bình đẳng của 2 Phần tử DOM
- 24. Kiểm tra tính hợp lệ của email trong django/python
- 25. Kiểm tra tính bình đẳng của ba giá trị
- 26. Cách kiểm tra nhiều thuộc tính của một đối tượng
- 27. kiểm tra tính khả dụng của Dịch vụ web WCF
- 28. kiểm tra sự tồn tại của thuộc tính
- 29. Clojure - kiểm tra tính bình đẳng của biểu thức hàm?
- 30. Kiểm tra đơn vị - Những gì không để kiểm tra
sử dụng valgrind và câu hỏi trở nên phần nào tranh luận. http://valgrind.org/ – msw
@msw valgrind là tốt và chúng không va chạm. MALLOC_CHECK_ nhẹ hơn nhiều so với valgrind và không yêu cầu bất kỳ hành động frp, người dùng nào (ví dụ: chạy ứng dụng thông qua lvalgrind, kiểm tra kết xuất của valgrind), khi bạn thiết lập nó. Đây không phải là tình huống với valgrind. Bất kỳ cách nào, câu hỏi của tôi không phải là về valgrind :) – dimba