Форум программистов, компьютерный форум 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; b=rand()%7; c=rand()%7; d=rand()%7; e=rand()%7;//случайное значение из 7(кол-во картинок в ImageList) 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; base.close();
C++ Error C3861: 'poisson': identifier not found http://www.cyberforum.ru/cpp-beginners/thread308575.html
Помогите, пожалуйста. Нужно зашумить значения синусоидальной последовательности случайной величиной распределенной по з. Пуассона. #include "stdafx.h" #include <iostream> #include <stdio.h> #include <math.h> #include <cstdlib> #include <fstream> #include <random> int _tmain(int argc, _TCHAR* argv)
C++ Структуры В магазин завезены товары, сведения о которых размещены в двоичном файле структур. Каждая запись файла - структура. Каждая разновидности товара соответствует структура следующего состава: struct goods { char наименование_товара; char страна ; int количество_единиц_товара; int код_фирмы-изготовителя; struct дата_получения_товара { подробнее

Показать сообщение отдельно
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 то вот такая беда.
 
Текущее время: 11:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru