Trong nhiều cuốn sách và hướng dẫn, tôi đã nghe thực hành quản lý bộ nhớ nhấn mạnh và cảm thấy rằng một số điều bí ẩn và khủng khiếp sẽ xảy ra nếu tôi không giải phóng bộ nhớ sau khi sử dụng xong.
Tôi không thể nói cho các hệ thống khác (mặc dù với tôi là hợp lý khi cho rằng chúng áp dụng một thực tiễn tương tự), nhưng ít nhất trên Windows, Kernel về cơ bản được đảm bảo để dọn sạch hầu hết các tài nguyên (ngoại trừ một số ít) được sử dụng bởi một chương trình sau khi kết thúc chương trình. Trong đó bao gồm bộ nhớ heap, trong số những thứ khác.
Tôi hiểu lý do tại sao bạn muốn đóng tệp sau khi sử dụng xong để cung cấp cho người dùng hoặc tại sao bạn muốn ngắt kết nối ổ cắm được kết nối với máy chủ để tiết kiệm băng thông, nhưng có vẻ ngớ ngẩn phải micromanage TẤT CẢ bộ nhớ của bạn được sử dụng bởi chương trình của bạn.
Bây giờ, tôi đồng ý rằng câu hỏi này rất rộng vì cách bạn xử lý bộ nhớ của bạn dựa trên lượng bộ nhớ bạn cần và khi bạn cần, vì vậy tôi sẽ thu hẹp phạm vi của câu hỏi này: Nếu tôi cần sử dụng một phần của bộ nhớ trong suốt tuổi thọ của chương trình của tôi, có thực sự cần thiết phải giải phóng nó ngay trước khi kết thúc chương trình không?
Chỉnh sửa: Câu hỏi được đề xuất dưới dạng trùng lặp dành riêng cho họ hệ điều hành Unix. Câu trả lời hàng đầu của nó thậm chí đã chỉ định một công cụ dành riêng cho Linux (ví dụ Valgrind). Câu hỏi này có nghĩa là bao gồm hầu hết các hệ điều hành không nhúng "thông thường" và tại sao nó không hoặc không phải là một cách thực hành tốt để giải phóng bộ nhớ cần thiết trong suốt tuổi thọ của chương trình.