Форум программистов, компьютерный форум 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
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
30.05.2011, 21:55  [ТС]     течь памяти из вектора
постараюсь дать общую идею, так как все вкатать это ужос.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include "shape.h" //здесь абстрактный класс фигуры
 
class S //это некий управляющий класс, управляет очередями сообщений заодно и отрисовкой
{
 
public:
vector<shape*> VEC // вектор содержит указатели на фигуры производные от shape - они и перерисовываются по WM_PAINT
 
S(){};
 
~S()
 {
 for(int i=0;i<VEC.size();i++)
  delete VEC[i];
 VEC.clear();
 };
}
 
 
class curve: public shape
{
public:
vector<shape*> V2;
curve(){};
~curve()
 {
 for(int i=0;i<V2.size();i++)
  delete V2[i];
  V2.clear();
 }
}
 
//привел только деструкторы дабы не громоздить и показать как очищаю векторы
//ниже создание объектов, приведу некую абстрактную функцию.
 
void make()
{
S s;
 
//создание простых фигур через конструкцию switch в ответ на выбор меню, цвета там и пр и 
//движение мыши.
//  указатели заталкиваюся в вектор класса S после того как левая клавиша отпущена.
shape* figure = new line();
s.VEC.push_back(figure);
shape* figure = new circle();
s.VEC.push_back(figure);
//в конструкторах фигур, координаты, цвет, толщина пера, тип, HRGN полигон(для определения 
//пересечений), ничего динамического, ну а ниже собственно создание curve
figure = new curve()// этот конструктор и в реале пустой
//на движение мыши 
curve.addsegment() - сюда передаются все параметры как для создания линии, координаты и пр.
//левая клавиша отжата и curve добавляется в общий вектор
s.VEC.push_back(figure)
}
 
curve.addsegment()
{
shape8 temp = new line();
V2.push_back(temp);// курва это просто набор простых линий
}
 
//расписывать рисование думаю нет смысла. итак камень преткновения
//при такой схеме все работает, рисуется удаляется, чисто.
//выстрел - летящий круг пересекает регион объекта в векторе и по этому принципу объект 
//удаляется из вектора, для простых фигур вполне прокатывает delete s.VEC[i];s.VEC[i]=0;// нет течи
//думаю не совсем верно это поскольку остается пустая ячейка в векторе
// для курвы - и удалял через *iterator, и через delete + erase() ,и через приведение указателя //shape* к curve*, и вызывал //~curve() не советуют так делать (почему?) . деструкторы 
//вызываются, все ок, объекты 
//уничтожаются, НО на выходе - течь. Стреляешь не в курву - нет течи. А с курвой прям беда.
//
сейчас я отправлю сообщение. Я новичок и оно может быть оформлено неверно. Ужо не судите. Постарался объяснить суть.

 Комментарий модератора 
Используйте теги форматирования кода!
 
Текущее время: 09:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru