Tôi tin rằng câu trả lời là không, không bao giờ cho phép rò rỉ bộ nhớ và tôi có một vài lý do mà tôi chưa thấy rõ ràng. Có những câu trả lời kỹ thuật tuyệt vời ở đây nhưng tôi nghĩ rằng câu trả lời thực sự xoay quanh nhiều lý do xã hội / con người hơn.
(Đầu tiên, lưu ý rằng như những người khác đã đề cập, một sự rò rỉ đúng là khi chương trình của bạn, bất cứ lúc nào, mất theo dõi tài nguyên bộ nhớ mà nó đã được phân bổ. Trong C, điều này xảy ra khi bạn malloc()
đến một con trỏ và để cho rằng phạm vi con trỏ nghỉ mà không làm một free()
Đầu tiên.)
Mấu chốt quan trọng của quyết định của bạn ở đây là thói quen. Khi bạn viết mã bằng ngôn ngữ sử dụng con trỏ, bạn sẽ sử dụng con trỏ rất nhiều . Và con trỏ là nguy hiểm; chúng là cách dễ nhất để thêm tất cả các cách xử lý sự cố nghiêm trọng vào mã của bạn.
Khi bạn đang viết mã, đôi khi bạn sẽ ở trên bóng và đôi khi bạn sẽ mệt mỏi hoặc tức giận hoặc lo lắng. Trong những khoảng thời gian hơi mất tập trung đó, bạn đang mã hóa nhiều hơn cho chế độ lái tự động. Hiệu ứng tự động không phân biệt giữa mã một lần và mô-đun trong dự án lớn hơn. Trong những khoảng thời gian đó, những thói quen bạn thiết lập là những gì sẽ kết thúc trong cơ sở mã của bạn.
Vì vậy, không bao giờ cho phép rò rỉ bộ nhớ vì lý do tương tự mà bạn vẫn nên kiểm tra điểm mù của mình khi chuyển làn ngay cả khi bạn là chiếc xe duy nhất trên đường vào lúc này. Trong thời gian khi bộ não hoạt động của bạn bị phân tâm, những thói quen tốt là tất cả những gì có thể cứu bạn khỏi những sai lầm tai hại.
Ngoài vấn đề "thói quen", con trỏ rất phức tạp và thường đòi hỏi nhiều năng lực não bộ để theo dõi tinh thần. Tốt nhất là không "làm vẩn đục nước" khi nói đến việc sử dụng con trỏ của bạn, đặc biệt là khi bạn mới lập trình.
Có một khía cạnh xã hội hơn nữa. Bằng cách sử dụng đúng malloc()
và free()
, bất cứ ai nhìn vào mã của bạn sẽ thấy thoải mái; bạn đang quản lý tài nguyên của bạn. Tuy nhiên, nếu bạn không, họ sẽ ngay lập tức nghi ngờ vấn đề.
Có thể bạn đã tìm ra rằng rò rỉ bộ nhớ không ảnh hưởng gì đến bối cảnh này, nhưng mọi người duy trì mã của bạn cũng sẽ phải xử lý nó trong đầu khi anh ta đọc đoạn mã đó. Bằng cách sử dụng, free()
bạn loại bỏ sự cần thiết phải xem xét vấn đề.
Cuối cùng, lập trình đang viết một mô hình tinh thần của một quá trình sang một ngôn ngữ rõ ràng để một người và một máy tính có thể hiểu hoàn toàn quy trình nói trên. Một phần quan trọng của thực hành lập trình tốt là không bao giờ đưa ra sự mơ hồ không cần thiết.
Lập trình thông minh là linh hoạt và chung chung. Lập trình xấu là mơ hồ.