Dưới đây là một số mẫu mã mà tôi có:Xóa một đối tượng trong C++
void test()
{
Object1 *obj = new Object1();
.
.
.
delete obj;
}
tôi chạy nó trong Visual Studio, và nó bị treo ở phù hợp với 'xóa obj;'. Đây có phải là cách bình thường để giải phóng bộ nhớ liên kết với một đối tượng không? Tôi nhận ra rằng nó tự động gọi destructor ... điều này có bình thường không?
Đây là một đoạn mã:.
if(node->isleaf())
{
vector<string> vec = node->L;
vec.push_back(node->code);
sort(vec.begin(), vec.end());
Mesh* msh = loadLeaves(vec, node->code);
Simplification smp(msh);
smp.simplifyErrorBased(errorThreshold);
int meshFaceCount = msh->faces.size();
saveLeaves(vec, msh);
delete msh;
}
loadleaves()
là một chức năng mà đọc một lưới từ đĩa và tạo ra một đối tượng Mesh
và trả về nó (nghĩ về vec
và node->code
chỉ là thông tin về mở tệp)
Tôi có nên xóa dòng delete msh;
không?
cho phép xem lớp học của bạn trông như thế nào. bạn có thể có cái gì đó sai với destructor của bạn. – TheFuzz
Chức năng 'loadLeaves' được đề cập dưới đây có phân bổ đối tượng trên heap không? hoặc nó trả lại địa chỉ của một địa phương hoặc một cái gì đó như thế? hãy nhớ rằng, bạn chỉ có thể 'xóa' những gì bạn' mới' ... –
Hãy chắc chắn rằng destructor không phải là riêng tư! – Vaibhav