Я использую Visual Studio 2008, разрабатываю окно OpenGL. Я создал несколько классов для создания скелета, один для суставов, один для кожи, один для тела (который является держателем для нескольких суставов и кожи) и один для чтения файла скелета/скина.
В каждом из моих классов я использую указатели для большинства своих данных, большинство из которых объявлены с помощью = new int[XX]. У меня есть деструктор для каждого класса, который удаляет указатели, используя delete[XX].
В моей функции отображения GLUT я объявляю тело, открываю файлы и рисую их, а затем удаляю тело в конце отображения. Но где-то в программе все еще есть утечка памяти. Со временем использование памяти продолжает увеличиваться с постоянной скоростью, что я интерпретирую как то, что не удаляется.
Я не уверен, что это что-то в функции отображения перенасыщения, которая просто не удаляет класс Body, или что-то еще. Я выполнил шаги по обнаружению утечки памяти в Visual Studio 2008, и он не сообщает об утечке, но я не уверен на 100%, что он работает правильно для меня. Я не владею С++, поэтому, возможно, я что-то упускаю из виду, может кто-нибудь это увидеть?
Из основного:
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;
}