Форум программистов, компьютерный форум 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
31.05.2011, 12:31  [ТС]     течь памяти из вектора
спасибо всем за ответы огромное. но хочу уточнить. объекты внутри курвы удаляются в ее деструкторе. тут все ок. т.е. когда она дергается на удаление из основного списка - вызывается ее деструктор, а в нем чистится внутренний список. Это касается и виртуальных деструкторов - я проверял - вызывается именно нужный деструктор, ~curve() и в нем чистится список содержащий линии составляющие кривую.
поскольку все объекты стремятся разрушится на выходе из проги, то дергаются деструкторы в которых я очищаю то, что насоздавал в куче. повторю что при простом рисовании - создай хоть 50 curve, каждая из сотен сегментов - на выходе все чисто. Проблем именно с удалением из вектора по позиции.
Или я не уловил совет? Предлагается принудительно очистить списоk curve? он ведь и так в деструкторе чистится.

по поводу auto_ptr - каюсь, я новичок и не дочитал еще до них. Уже жалею что переделал все на вектор вместо своего интрузивного списка, там было все очень просто и видно что почем, но была другая причина почему я переделал на вектор(это отдельная тема, хотел проверить кое что). пока непонятно в чем причина. буду тестировать сегодня еще. Это тестовая прога так сказать, никаких бизнес критикал, но прсто очень хочется понимания а не так все бросить и дальше что то делать.

Добавлено через 1 час 43 минуты
в общем то выписанные на бамажку адреса указателей дали следующее

{187} normal block at 0x00366158, 8 bytes long.
Data: <Lo6 > 4C 6F 36 00 00 00 00 00
{186} normal block at 0x00366F18, 72 bytes long.
Data: < B > B4 E9 42 00 CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.

оба объекта по адресам расположены в пределах куска памяти под curve.

второй объект это ВСЕГДА некий "несуществующий" объект находящийся за пределами последнего элемента вектора. например я создал 38 элементов а на выходе получил течь с адресом 39-го, создал 39 - получил течь адреса 40-го, это немного странно.
учитывая что новые элементы добавляются к вектору только стандартными операциями push никакого случайного добавления быть не может.

по первому адресу непонятно - он лежит в диапазоне куска выделенного под curve где то между 7 и 8 элементом. с чего бы это?

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