30/09/2018, 18:14
Ensure that there is no memory leak :D
Trong việc lập trình C++ thì việc quản lý bộ nhớ rất đâu đầu và thường không tránh khỏi memory leak xảy ra. Câu hỏi của mình: Làm cách nào để chắc chắn trong chương trình của mình không có memory leak Hy vọng các câu trả lời sẽ là kinh nghiệm chung cho mọi người khi làm việc với bộ nhớ.
Bài liên quan
Có thể dùng các kiểu smart pointer như auto_ptr, unique_ptr, shared_ptr để làm việc.
Smart pointer
In computer science, a smart pointer is an abstract data type that simulates a pointer while providing added features, such as automatic memory management or bounds checking. Such features are intended to reduce bugs caused by the misuse of pointers, while retaining efficiency. Smart pointers typically keep track of the memory they point to, and may also be used to manage other resources, such as network connections and file handles. Smart pointers were first popularized in the programming langua...
IDE tự generate code hả Vũ?
nghĩa là sao anh Đạt
Em bảo IDE có cơ chế hủy pointers. Làm thế nào nó hủy được?
Em ít khi thấy người dùng Qt Creator delete Object một cách thủ công, nên em nghĩ vậy
hahaha vậy là em đoán sai rồi, em google Qt QObject delete later rồi đọc lại nhé.
QObject là class tự hủy sự dụng cơ chế RAII (bỏ Qt hai năm rồi, em kiểm trai lại giúp anh nhé)
À đúng rồi, vẫn phải kết nối signals nào đó với slot có method deleteLater() để nó hủy Object
Thua anh Đạt quả này
P/s: Trong cocos2d-x thì nó có CC_SAFE_DELETE(); để hủy đối tượng an toàn.
Dùng thêm chương trình để kiểm tra leak
Chú ý đến việc cấp phát và hủy rất quan trọng nhưng việc này chỉ có ý nghĩa khi hiểu được những kiến thức cơ bản. Để có được thứ cơ bản thì trao đổi với nhau là cách hiệu quả nhất
Một lỗi liên quan đến bộ nhớ mà mình không nghĩ là sẽ mắc phải khi làm bài tập.
;)) có cấp phát thì có hủy. Phần mềm hỗ trợ thì cũng chỉ một phần thôi, ngày trước tớ có dùng vld nhưng hồi đó tìm hiểu thấy linux có công cụ rất hay, chưa từng được xài qua :D. (vừa search lại google đây http://valgrind.org/)