Вот пример кода, который у меня есть:Удаление объекта в C++
void test()
{
Object1 *obj = new Object1();
.
.
.
delete obj;
}
я запустить его в Visual Studio, и он выходит из строя в соответствии с «удалить OBJ;». Разве это не нормальный способ освободить память, связанную с объектом? Я понял, что он автоматически вызывает деструктор ... это нормально?
Вот фрагмент кода:.
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()
это функция, которая считывает сетку с диска и создает Mesh
объект и возвращает его (вспомните vec
и node->code
только информация о файл должен быть открыт)
Следует ли удалить строку delete msh;
?
позволяет увидеть, как выглядит ваш класс. вы могли бы что-то не так с вашим деструктором. – TheFuzz
Вы упомянули ниже функцию loadLeaves, чтобы выделить объект в куче? или он возвращает адрес локального или что-то в этом роде? помните, вы можете только «удалить» то, что вы «новый» ... –
Удостоверьтесь, что деструктор не является приватным! – Vaibhav