Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

течь памяти из вектора - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обработка бинарных файлов http://www.cyberforum.ru/cpp-beginners/thread308602.html
Должны соблюдаться условия: - Размер массива чисел должен вводиться с клавиатуры; - При формировании массива предусмотреть выбор варианта: случайным образом или вводом с клавиатуры; - При выборе...
C++ Игровой автомат делаю игру "игровой автомат" вот код кнопки "Играть" void __fastcall TForm1::Button1Click(TObject *Sender) { int a, b, c, d, e; // a-1 слот b-2 слот c-3 слот d-4 слот e-5 слот a=rand()%7;... http://www.cyberforum.ru/cpp-beginners/thread308598.html
Строки C++
Помогите пожалуйста решить задачку: Имеется литерная последовательность, состоящая из не более чем 50 слов, в каждом из которых от 1 до 8 литер. Слова разделены одним или несколькими знаками % ...
Условие конца файла C++
Имеем функцию: void Inpfile (stud& s) { ifstream base("base.txt"); if(!base)std::cout << "Can't create input file"; base>>s.n; base>>s.fio; base>>s.gr; base>>s.st;...
C++ Error C3861: 'poisson': identifier not found http://www.cyberforum.ru/cpp-beginners/thread308575.html
Помогите, пожалуйста. Нужно зашумить значения синусоидальной последовательности случайной величиной распределенной по з. Пуассона. #include "stdafx.h" #include <iostream> #include <stdio.h>...
C++ Структуры В магазин завезены товары, сведения о которых размещены в двоичном файле структур. Каждая запись файла - структура. Каждая разновидности товара соответствует структура следующего состава: ... подробнее

Показать сообщение отдельно
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
30.05.2011, 22:58  [ТС]
да конечно. -> сорри это тут видимо спешил. все верно вектор в нем указатели на объекты, внтури curve - тоже вектор тоже с указателями на объекты в куче. признаю ошибку по поводу обнуления элемента основного вектора, но разве при выходе из программы и разрушении вектора - не будет удален и этот нулевой, пустой элемент?
далее. я пробовал и erase(), т.е. не было пустых элементов. Обнуление делал для того чтобы работали условия такого плана if(!s.VEC[i]) что то делаем.

дошло до того что я стал создавать только одну фигуру curve и удалять ее delete s.VEC[i]; далее затирать данную позицию erase() или еще лучше s.VEC.clear(); вектор показывал что его размер 0, до трюков со сжатием я еще не дошел, и его объем остался 1.
и....при закрытии течь.
постараюсь выделить главное.
1. проверка показала что при delete s.VEC[i] вызыватся ~curve() и внутренний список очищается.
значит curve чиста, течь не в ней так? (при простом рисованиии все списки удаляются по той же схеме и течи нет, т.е. я нарисовал дом, траву и людей, создал с десяток curve и при закрытии окна вызваются эти 10 ~curve() и все чисто)
2. именно при попытке удалить искуственно элемент общего вектора и именно если этот элемент curve, при закрытии память утекает
Detected memory leaks!
Dumping objects ->
{234} normal block at 0x003661C0, 8 bytes long.
Data: < {6 > D4 7B 36 00 00 00 00 00
{233} normal block at 0x00367BA0, 72 bytes long.
Data: < B > B4 E9 42 00 CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.

Я так понимаю вопрос можно свести к такому. как правильно удалить объект используя указатель на него хранящийся в любой части вектора, при условии что объект в куче и сам внутри содержит вектор указателей на объекты кучи.Что из того что я написал в деструкторах не работает?

Добавлено через 15 минут
Валерий, может у меня глаз замылился и не понимаю чего то элементарного?
на каждый new объект приходится и delete. и при последовательном очищении как, внешнего так и внутреннего вектора(curve) все хорошо. но стоит "выстрелом" удалить вручную элемент вектора и если этот элемент curve то вот такая беда.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru