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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
VitPon
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 29
#1

Vector, очистка памяти - C++

22.04.2013, 12:19. Просмотров 912. Ответов 4
Метки нет (Все метки)

У меня есть вектор, который состоит из объектов типа класс. После выполнения данного блока мои объекты удаляются(вызываются ихние деструкторы). Как мне избежать данной ситуации?
C++
1
2
3
4
5
6
7
8
9
10
11
12
void LoadBD(istream& file, char mbuf[], vector<FlatRequest> mflats)
{
    system("cls");
    for(unsigned int i=0; i<mflats.size(); i++)
        {
            mflats.at(i).Init(file);
            file.getline(mbuf, 256);
        }
    cout<<"База данных успешно загружена."<<endl;
    mflats.at(0).Show();//Проверял, есть ли тут вообще что-либо, оказалось, что все верно, объект выводится.
 
}
у меня дальше функция есть, которая выводит все данные объектов на экран, но так как там ничего нету - она лезет непонятно куда.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2013, 12:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Vector, очистка памяти (C++):

Очистка контейнера vector - C++
Доброго времени суток господа программисты. У меня возникла дилемма. В общем, у меня есть вектор std::vector&lt;std::vector&lt;int&gt; &gt; grid;...

Очистка памяти - C++
Подскажите пожалуйста что не так делаю, создаю массив лейблов: TLabel **Labels; Labels = new TLabel*; for(int i = 0; i &lt; rabot +...

Очистка памяти - C++
Цель: Написать программу, которая читает текст из файла и записывает в новый файл те слова, которые содержат буквы, введенные с...

Очистка памяти - C++
При выполнении программы, память приложения растёт, а она должна быть неизменной. int main() { setlocale(LC_ALL, &quot;Russian&quot;); ...

Очистка памяти - C++
Вот сделал лабу и все работает отлично, но осталось последнее new выделяет память мне нужно добавить функцию которая будет вызыватся в...

Очистка памяти - C++
Как правильно очистить память в массиве классов Вот код конструктора, выделяющего память, и деструктора. Выдает ошибку в самом конце...

4
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
22.04.2013, 12:27 #2
В функции создается локальная копия вектора mflats. При выходе из функции эта копия уничтожится. Если Вы хотите сохранить данные в векторе, даже после выхода из функции, то передавайте вектор как ссылку:
C++
1
void LoadBD(istream& file, char mbuf[], vector<FlatRequest> &mflats)
1
VitPon
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 29
22.04.2013, 12:59  [ТС] #3
спасибо, помогло)
0
Avazart
Эксперт С++
7213 / 5385 / 286
Регистрация: 10.12.2010
Сообщений: 23,797
Записей в блоге: 17
22.04.2013, 17:25 #4
Кстати почему просто не перегрузить оператор << и >> относительно вашего класса ?
0
VitPon
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 29
22.04.2013, 18:13  [ТС] #5
Цитата Сообщение от Avazart Посмотреть сообщение
Кстати почему просто не перегрузить оператор << и >> относительно вашего класса ?
чтобы не было отдельной функции для инициализации данных? чтобы сразу через >> происходило иннициализирование?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2013, 18:13
Привет! Вот еще темы с ответами:

очистка памяти - C++
в данном случае деструктор очистит всё, или нет? #include &quot;base.h&quot; #include &lt;cstdlib&gt; #include &lt;ctime&gt; base::base(int x,int y) { ...

Очистка памяти массива (С++) - C++
Не получается очистить память массива. По моему коду, по завершении программы выдаётся ошибка &quot;попытка очистки памяти после записи её в...

указатели и очистка памяти - C++
В отличии от java в с++ память по умолчанию нужно очищать самостоятельно. Понятно, что если память зарезервированная неким указателем...

Ссылки и очистка памяти - C++
Здравствуйте! Если я создаю ссылку и присваиваю ей значение (константу или нет) должен я как и с указателями заботится об памяти? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
22.04.2013, 18:13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru