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

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

Восстановить пароль Регистрация
 
VitPon
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 29
22.04.2013, 12:19     Vector, очистка памяти #1
У меня есть вектор, который состоит из объектов типа класс. После выполнения данного блока мои объекты удаляются(вызываются ихние деструкторы). Как мне избежать данной ситуации?
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();//Проверял, есть ли тут вообще что-либо, оказалось, что все верно, объект выводится.
 
}
у меня дальше функция есть, которая выводит все данные объектов на экран, но так как там ничего нету - она лезет непонятно куда.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2013, 12:19     Vector, очистка памяти
Посмотрите здесь:

C++ Очистка памяти
C++ Очистка памяти
Очистка памяти - ошибка C++
C++ Очистка памяти
C++ Очистка памяти
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
22.04.2013, 12:27     Vector, очистка памяти #2
В функции создается локальная копия вектора mflats. При выходе из функции эта копия уничтожится. Если Вы хотите сохранить данные в векторе, даже после выхода из функции, то передавайте вектор как ссылку:
C++
1
void LoadBD(istream& file, char mbuf[], vector<FlatRequest> &mflats)
VitPon
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 29
22.04.2013, 12:59  [ТС]     Vector, очистка памяти #3
спасибо, помогло)
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,592
Записей в блоге: 17
22.04.2013, 17:25     Vector, очистка памяти #4
Кстати почему просто не перегрузить оператор << и >> относительно вашего класса ?
VitPon
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 29
22.04.2013, 18:13  [ТС]     Vector, очистка памяти #5
Цитата Сообщение от Avazart Посмотреть сообщение
Кстати почему просто не перегрузить оператор << и >> относительно вашего класса ?
чтобы не было отдельной функции для инициализации данных? чтобы сразу через >> происходило иннициализирование?
Yandex
Объявления
22.04.2013, 18:13     Vector, очистка памяти
Ответ Создать тему
Опции темы

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