Table of Contents
Thông thường có vấn đề trong chương trình C và C++ có thể dẫn đến việc sử dụng trí nhớ và hệ thống bất ổn định. Hiểu được ví dụ thực tế giúp các nhà phát triển xác định và sửa chữa những vấn đề này một cách hiệu quả. Bài này trình bày những kịch bản điển hình và giải pháp liên quan đến việc rò rỉ trí nhớ trong những ngôn ngữ này.
Ví dụ 1: Thiếu vắng ở C
Trong C, bộ nhớ được cấp phát một cách năng động phải được giải phóng rõ ràng. Không thể làm thế sẽ làm lộ bộ nhớ. Chẳng hạn, việc tạo bộ nhớ [FLT: 0] không có kết quả [FLT: 1] tương ứng với bộ nhớ bị rò rỉ.
Đoạn mã:
Giải pháp:
Bảo đảm được gọi sau khi sử dụng.
Thí dụ 2: Những người viết sách không được miễn phí ở C
Viết một câu chỉ ra rằng bộ nhớ được phân bổ mà không cần giải phóng nó sẽ gây ra một lỗ rò rỉ.
Đoạn mã:
Giải pháp:
Giải phóng con trỏ gốc trước khi chuyển tiếp:
Ví dụ 3: Bộ nhớ bị tắt ở C++ với bộ nhớ mới
Trong C++, dùng để phân phát bộ nhớ cần phải phân loại với .
Đoạn mã:
Giải pháp:
Dùng để giải phóng bộ nhớ:
Những thực hành tốt nhất để ngăn ngừa trí nhớ bị kiệt quệ
- Luôn luôn kết hợp với và với .
- Dùng con trỏ thông minh ở C++ để tự động quản lý bộ nhớ.
- Thường xuyên xem lại mã cho những vụ rò rỉ tiềm năng.
- Sử dụng các công cụ như Valgrind để phát hiện rò rỉ trong quá trình phát triển.