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

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

Войти
Регистрация
Восстановить пароль
 
 
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
#1

Заюзанный вектор в конструкторе взрывается, самоуничтожается, очищается, отправляется в адд - C++

05.02.2012, 04:46. Просмотров 1006. Ответов 23
Метки нет (Все метки)

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
#include <iostream>
#include <vector>
#include <cstdlib>
#include <set>
 
using namespace std;
 
#define F_SIZE 30
#define DICE 6
 
 
class field{
private:
    vector<int*> rms;
    int *something(){
        return new int(DICE);
    }
public:
    field(bool autogen){
        if(autogen){
            int n = 5;
            while(n--){
                rms.push_back(something());
            }
        }else{
            cout << "Have not writed yet;\n";
            //herein we have to write something...
        }cout << rms.size();
        cout << " | end of field's constructor.\n";
    }field(){
        field(true);
    }void show(){
        cout << rms.size() << ":\n";
        for(vector<int*>::iterator i = rms.begin(); i != rms.end(); i++){
            cout << "(" << (**i) << "; " << (**i) << ")";
            cout << " |=| ";
            cout << "(" << (**i) << ";" << (**i) << ")";
            cout << endl;
        }
    }
};
 
int main(){
    field fl;
    fl.show(); //WTF!?. Why vector erased after constructor?..
    return 0;
}
Вывод:
Код
5 | end of field's constructor.
0:
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2012, 04:46     Заюзанный вектор в конструкторе взрывается, самоуничтожается, очищается, отправляется в адд
Посмотрите здесь:

Мозг взрывается C++
Правильно ли очищается память? C++
C++ Не очищается поток после cin.clear()
контейнер -вектор вложеный в вектор C++
C++ Добавление в вектор объекта класса в конструкторе
C++ Cpp. Как очищается память в функциях?
C++ Не очищается экран
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5761 / 3410 / 255
Регистрация: 08.02.2010
Сообщений: 7,412
05.02.2012, 11:30     Заюзанный вектор в конструкторе взрывается, самоуничтожается, очищается, отправляется в адд #21
Ну и собственно:
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
#include <iostream>
#include <vector>
#include <cstdlib>
#include <set>
 
using namespace std;
 
#define F_SIZE 30
#define DICE 6
 
 
class field{
private:
    vector<int*> rms;
    int *something()
    {
        return new int(DICE);
    }
public:
    field(bool autogen = true)
    {
        if(autogen)
    {
            int n = 5;
            while(n--)
        {
                rms.push_back(something());
            }
        } else {
            cout << "Have not writed yet;\n";
            //herein we have to write something...
        }
    cout << rms.size();
        cout << " | end of field's constructor.\n";
    }
    void show()
    {
        cout << rms.size() << ":\n";
        for(vector<int*>::iterator i = rms.begin(); i != rms.end(); i++)
    {
            cout << "(" << (**i) << "; " << (**i) << ")";
            cout << " |=| ";
            cout << "(" << (**i) << ";" << (**i) << ")";
            cout << endl;
        }
    }
};
 
int main(){
    field fl;
    fl.show(); //WTF!?. Why vector erased after constructor?..
    return 0;
}
вывод приводить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
05.02.2012, 11:30  [ТС]     Заюзанный вектор в конструкторе взрывается, самоуничтожается, очищается, отправляется в адд #22
А какой копилятор юзает LWS?..
silent_1991
Эксперт С++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,025
Завершенные тесты: 1
05.02.2012, 11:31     Заюзанный вектор в конструкторе взрывается, самоуничтожается, очищается, отправляется в адд #23
AnyOne697, последний g++. Но и не последний работает по таким же правилам.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2012, 11:32     Заюзанный вектор в конструкторе взрывается, самоуничтожается, очищается, отправляется в адд
Еще ссылки по теме:

C++ Не очищается динамическая память, codeblocks
C++ Вектор ссылок и вектор указателей
C++ Очищается ли вся динамическая память по завершению программы?
C++ Динамические массивы: очищается ли память?
C++ Не очищается поток ввода

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

Или воспользуйтесь поиском по форуму:
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
05.02.2012, 11:32  [ТС]     Заюзанный вектор в конструкторе взрывается, самоуничтожается, очищается, отправляется в адд #24
Да, всё работает, что есть странно и, вместе с тем, интересно...

Спасибо! Просветили!
Yandex
Объявления
05.02.2012, 11:32     Заюзанный вектор в конструкторе взрывается, самоуничтожается, очищается, отправляется в адд
Ответ Создать тему
Опции темы

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