Trong C++ Làm thế nào để quyết định hoặc biết nếu một con trỏ đã bị xóa trước khi ??Làm thế nào để phát hiện nếu con trỏ bị xóa và xóa an toàn?
khi tôi cố xóa một con trỏ đã bị xóa trước đó trong một phần khác của mã, nó đã ném một ngoại lệ không thể xử lý được.
Tôi đã tự hỏi liệu có cách nào để kiểm tra hoặc thử xóa con trỏ không? bất kỳ tham chiếu nào về các hoạt động bộ nhớ nâng cao.
tôi cũng muốn nắm vững ngoại lệ chưa xử lý của con trỏ và quyền truy cập vào bảo vệ hoặc quyền truy cập là vi phạm, ... loại lỗi này.
nhờ cho những người đưa ra một số kiến thức của họ và thời gian của mình để giúp đỡ người khác và chia sẻ benfits của họ
Cập nhật
Lời khuyên lớn từ rất nhiều c hiện đại ++ phát triển cộng đồng là - Sử dụng con trỏ thông minh hoặc cố gắng tránh sử dụng con trỏ thô. Nhưng đối với việc ném an toàn và bảo vệ bộ nhớ (ISO_CPP_FAQ) và dĩ nhiên nếu bạn muốn tránh chi phí nhỏ sử dụng con trỏ thông minh [có thể không đáng chú ý nhưng chúng có phí] bạn có thể viết các phương thức tùy chỉnh xử lý con trỏ thô [ loại *] - đây không phải là chung. Luôn ưu tiên con trỏ thông minh đến các con trỏ thô.
Trong 'Going Native 2013', một lời khuyên chung được đưa ra là - Không bao giờ sử dụng con trỏ thô.
Sử dụng con trỏ thông minh ('std :: shared_ptr' và' std :: weak_ptr') –
Cảm ơn rất nhiều vì lời khuyên, nhưng điều này sẽ giải quyết được vấn đề từ gốc, không có vấn đề gì từ phía con trỏ sẽ xuất hiện nếu tôi sử dụng con trỏ thông minh? – ahmedsafan86
a) Bạn không xóa con trỏ, bạn xóa * đối tượng *. b) Sử dụng con trỏ không hợp lệ không ném ngoại lệ; thay vào đó, nó là * hành vi không xác định *. –