Bạn đang đăng ký một quan niệm sai lầm phổ biến rằng các khối heap không được giải phóng, nhưng vẫn có thể truy cập tại thời điểm chương trình tồn tại là rò rỉ. Đây không phải là sự thật. Các khối bị rò rỉ là những khối không có con trỏ vẫn tham chiếu, do đó chúng không thể được giải phóng. Thông qua nhiều năm chơi với (và phá vỡ) rất nhiều hạt nhân hoàn hảo tốt, tôi chưa bao giờ quản lý đủ để phá vỡ một trình quản lý bộ nhớ ảo đến mức nó không còn khai hoang toàn bộ không gian địa chỉ của một quá trình khi nó thoát ra. Trừ khi bạn đang làm việc với một hạt nhân được đánh dấu rõ ràng là 'mới và thử nghiệm', bạn sẽ có may mắn trúng xổ số hơn là tìm một hệ thống không sử dụng trình quản lý bộ nhớ ảo hiệu quả.
Không đặt cruft trong mã của bạn chỉ để có được điểm số hoàn hảo trong Valgrind. Nếu bạn không có công việc dọn dẹp thực sự nào để làm khác hơn là giải phóng bộ nhớ vẫn có tham chiếu hợp lệ, bạn không cần phải bận tâm. Nếu ai đó ném kill -9
vào chương trình của bạn, bạn sẽ không thể xử lý nó và sẽ thấy hành vi cũ lặp lại.
Nếu bạn có các bộ mô tả tệp cần dọn dẹp, các khóa được chia sẻ để từ bỏ, các luồng để tuôn ra hoặc bất kỳ điều gì khác phải xảy ra để các quá trình khác không bỏ lỡ bạn khi bạn mất hết. Chỉ cần không đi thêm mã mà không có gì để giải quyết một vấn đề không, nó chỉ có vẻ ngớ ngẩn để làm như vậy.
Note
này ban đầu sẽ là một bình luận, nhưng là quá dài và SO cau mày trên viết một cuốn tiểu thuyết một bình luận tại một thời điểm.
Nguồn
2011-01-26 12:02:45
ai đó có thể vui lòng s/Linux/Unix/để khái quát hóa điều này? –