Я использую Visual Studio 2008, Разрабатываю окно OpenGL. Я создал несколько классов для создания скелета, один для суставов, один для кожи, один для тела (который является держателем для нескольких суставов и кожи) и один для чтения файла skel / skin.
В каждом из моих классов я использую указатели для большинства моих данных, большинство из которых объявлено с использованием = new int [XX]. У меня есть деструктор для каждого класса, который удаляет указатели, используя delete [XX].
В моей функции отображения GLUT он объявляет тело, открывает файлы и рисует их, а затем удаляет тело в конце экрана. Но где-то в программе все еще есть утечка памяти. С течением времени потребление памяти продолжает расти с постоянной скоростью, что я интерпретирую как нечто, что не удаляется.
Я не уверен, что это что-то в функции перенастройки, которая просто не удаляет класс Body, или что-то еще. Я выполнил шаги по обнаружению утечки памяти в Visual Studio 2008, и она не сообщает о какой-либо утечке, но я не уверен на 100%, работает ли она правильно для меня. Я не владею C ++, так что, может быть, я что-то пропускаю, кто-нибудь может это увидеть?
Из основного:
void display(void){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Body *body = new Body();
body->readSkel("C:\\skel2.skel");
body->drawBody();
body = new Body();
body->readSkel("C:\\skel1.skel");
body->drawBody();
glutSwapBuffers();
body->~Body();
delete body;
}
Из тела:
Body::Body(){
skelFile = string();
skinFile = string();
totalJoints = 0;
joints = new Joint[25];
skin = new Skin;
}
Body::~Body(){
delete[25] joints;
delete skin;
}