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

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

Восстановить пароль Регистрация
 
 
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
05.02.2012, 04:46     Заюзанный вектор в конструкторе взрывается, самоуничтожается, очищается, отправляется в адд #1
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++ Cpp. Как очищается память в функциях?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
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
Сообщений: 532
05.02.2012, 11:30  [ТС]     Заюзанный вектор в конструкторе взрывается, самоуничтожается, очищается, отправляется в адд #22
А какой копилятор юзает LWS?..
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
05.02.2012, 11:31     Заюзанный вектор в конструкторе взрывается, самоуничтожается, очищается, отправляется в адд #23
AnyOne697, последний g++. Но и не последний работает по таким же правилам.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2012, 11:32     Заюзанный вектор в конструкторе взрывается, самоуничтожается, очищается, отправляется в адд
Еще ссылки по теме:

C++ Не очищается экран
C++ Нужно реализовать класс "вектор" с конструкторами, которые позволяют создать нулевой вектор и вектор с произвольным кол-во элементов.
C++ Не очищается динамическая память, codeblocks

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

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

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

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