Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/41: Рейтинг темы: голосов - 41, средняя оценка - 4.85
14 / 14 / 2
Регистрация: 09.05.2010
Сообщений: 79

free(): invalid next size (fast)

21.05.2010, 11:32. Показов 7770. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу понять в чем ошибка..
Debian lenny
Bash
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
*** glibc detected *** /home/user/eits/trunk/eits: free(): invalid next size (fast): 0x0806c118 ***
======= Backtrace: =========
/lib/i686/cmov/libc.so.6[0xb7b5f624]
/lib/i686/cmov/libc.so.6(cfree+0x96)[0xb7b61826]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0xb7d372e1]
/home/user/eits/trunk/eits[0x804ffe9]
/home/user/eits/trunk/eits[0x805f210]
/home/user/eits/trunk/eits[0x804aba5]
/lib/i686/cmov/libc.so.6(__libc_start_main+0xe5)[0xb7b07455]
/home/user/eits/trunk/eits(_ZNSt8ios_base4InitD1Ev+0x4d)[0x804a641]
======= Memory map: ========
08048000-0806b000 r-xp 00000000 08:06 1663706    /home/user/eits/trunk/eits
0806b000-0806c000 rw-p 00023000 08:06 1663706    /home/user/eits/trunk/eits
0806c000-080eb000 rw-p 0806c000 00:00 0          [heap]
b7700000-b7721000 rw-p b7700000 00:00 0
b7721000-b7800000 ---p b7721000 00:00 0
b787a000-b7884000 r-xp 00000000 08:01 250017     /lib/i686/cmov/libnss_files-2.7.so
b7884000-b7886000 rw-p 00009000 08:01 250017     /lib/i686/cmov/libnss_files-2.7.so
b7886000-b7888000 rw-p b7886000 00:00 0
b7888000-b789d000 r-xp 00000000 08:01 250003     /lib/i686/cmov/libnsl-2.7.so
b789d000-b789f000 rw-p 00014000 08:01 250003     /lib/i686/cmov/libnsl-2.7.so
b789f000-b78a1000 rw-p b789f000 00:00 0
b78a1000-b78aa000 r-xp 00000000 08:01 249994     /lib/i686/cmov/libcrypt-2.7.so
b78aa000-b78ac000 rw-p 00008000 08:01 249994     /lib/i686/cmov/libcrypt-2.7.so
b78ac000-b78d3000 rw-p b78ac000 00:00 0
b78d3000-b78e8000 r-xp 00000000 08:01 250000     /lib/i686/cmov/libpthread-2.7.so
b78e8000-b78ea000 rw-p 00014000 08:01 250000     /lib/i686/cmov/libpthread-2.7.so
b78ea000-b78ec000 rw-p b78ea000 00:00 0
b78ec000-b7a92000 r-xp 00000000 08:01 418178     /usr/lib/libmysqlclient_r.so.15.0.0
b7a92000-b7ad6000 rw-p 001a5000 08:01 418178     /usr/lib/libmysqlclient_r.so.15.0.0
b7ad6000-b7ad8000 rw-p b7ad6000 00:00 0
b7ad8000-b7aec000 r-xp 00000000 08:01 413532     /usr/lib/libz.so.1.2.3.3
b7aec000-b7aed000 rw-p 00013000 08:01 413532     /usr/lib/libz.so.1.2.3.3
b7aed000-b7aef000 r-xp 00000000 08:01 250005     /lib/i686/cmov/libdl-2.7.so
b7aef000-b7af1000 rw-p 00001000 08:01 250005     /lib/i686/cmov/libdl-2.7.so
b7af1000-b7c46000 r-xp 00000000 08:01 250009     /lib/i686/cmov/libc-2.7.so
b7c46000-b7c47000 r--p 00155000 08:01 250009     /lib/i686/cmov/libc-2.7.so
b7c47000-b7c49000 rw-p 00156000 08:01 250009     /lib/i686/cmov/libc-2.7.so
b7c49000-b7c4c000 rw-p b7c49000 00:00 0
b7c4c000-b7c58000 r-xp 00000000 08:01 241923     /lib/libgcc_s.so.1
b7c58000-b7c59000 rw-p 0000b000 08:01 241923     /lib/libgcc_s.so.1
b7c59000-b7c7d000 r-xp 00000000 08:01 249989     /lib/i686/cmov/libm-2.7.so
b7c7d000-b7c7f000 rw-p 00023000 08:01 249989     /lib/i686/cmov/libm-2.7.so
b7c7f000-b7d62000 r-xp 00000000 08:01 411594     /usr/lib/libstdc++.so.6.0.10
b7d62000-b7d65000 r--p 000e2000 08:01 411594     /usr/lib/libstdc++.so.6.0.10
b7d65000-b7d67000 rw-p 000e5000 08:01 411594     /usr/lib/libstdc++.so.6.0.10
b7d67000-b7d6e000 rw-p b7d67000 00:00 0
b7d6e000-b7e4f000 r-xp 00000000 08:01 2108       /usr/local/lib/libmysqlcppconn.so.4.1.1.0
b7e4f000-b7e59000 rw-p 000e0000 08:01 2108       /usr/local/lib/libmysqlcppconn.so.4.1.1.0
b7e59000-b7f93000 r-xp 00000000 08:01 11682      /usr/lib/i686/cmov/libcrypto.so.0.9.8
b7f93000-b7fa9000 rw-p 0013a000 08:01 11682      /usr/lib/i686/cmov/libcrypto.so.0.9.8
b7fa9000-b7fac000 rw-p b7fa9000 00:00 0
b7fb7000-b7fba000 rw-p b7fb7000 00:00 0
b7fba000-b7fbb000 r-xp b7fba000 00:00 0          [vdso]
b7fbb000-b7fd5000 r-xp 00000000 08:01 242252     /lib/ld-2.7.so
b7fd5000-b7fd7000 rw-p 0001a000 08:01 242252     /lib/ld-2.7.so
bffea000-bffff000 rw-p bffeb000 00:00 0          [stack]
 
Program received signal SIGABRT, Aborted.
[Switching to Thread 0xb78866c0 (LWP 2801)]
0xb7fba424 in __kernel_vsyscall ()
(gdb) bt
#0  0xb7fba424 in __kernel_vsyscall ()
#1  0xb7b1c640 in raise () from /lib/i686/cmov/libc.so.6
#2  0xb7b1e018 in abort () from /lib/i686/cmov/libc.so.6
#3  0xb7b5934d in ?? () from /lib/i686/cmov/libc.so.6
#4  0x0000000a in ?? ()
#5  0xbfffbdf4 in ?? ()
#6  0x00000400 in ?? ()
#7  0xb7c2f648 in ?? () from /lib/i686/cmov/libc.so.6
#8  0x00000017 in ?? ()
#9  0xbfffee79 in ?? ()
#10 0x0000001a in ?? ()
#11 0xb7c2f661 in ?? () from /lib/i686/cmov/libc.so.6
#12 0x00000002 in ?? ()
#13 0xb7c2f694 in ?? () from /lib/i686/cmov/libc.so.6
#14 0x00000020 in ?? ()
#15 0xb7c2f665 in ?? () from /lib/i686/cmov/libc.so.6
#16 0x00000004 in ?? ()
#17 0xbfffc323 in ?? ()
#18 0x00000008 in ?? ()
#19 0xb7c2f66b in ?? () from /lib/i686/cmov/libc.so.6
#20 0x00000005 in ?? ()
#21 0x00000000 in ?? ()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2010, 11:32
Ответы с готовыми решениями:

Оператор delete(ошибка) - free(): invalid next size (fast): 0x098f7008 ***
Делаю некое подобие функции itoa: char* c_itoa(int,char*,int):Реализацию сделал так(упрощённый вид):char* c_itoa(int number,char*...

Invalid error size
Ошибка выпадает при поиске файлов. В коде получаю хандле файла,проверяем ,если хандле больше нуля,тогда выделяем память. вот скрин...

Ошибка invalid field size
Когда нахожу сумму всех з/п не выдаёт ошибку SELECT sum(((.+.)*)+.+.-((.+.)**0.13)) AS FROM (((Doljnost INNER JOIN Lich_d ON...

9
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
21.05.2010, 12:02
SSxMe, да, сообщения об ошибке говорят о многом Лучше бы код показал, если это твоя софтина.
Цитата Сообщение от SSxMe Посмотреть сообщение
Не могу понять в чем ошибка.
Ошибка в освобождении памяти. Может, пойнтер неправильный, а может, куча закорраптилась.
1
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
21.05.2010, 12:04
Еще бы исходник выложил, было бы совсем замечательно.
1
14 / 14 / 2
Регистрация: 09.05.2010
Сообщений: 79
21.05.2010, 12:26  [ТС]
Я бы выложил, но не знаю в каком месте ориентироваться, так как проект уже разросся..
И отладчик не указывает в каком файле надо смотреть..
Может быть можно как то это узнать?

Добавлено через 7 минут
Ошибка происходит предположительно вот тут
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
            if(cmd.commands.size() == 3){
                // cmd.commands[0] - ID теста
                // cmd.commands[1] - Количество вопросов под выдачу
                // cmd.commands[2] - Время на выполнение теста
                int test_id = boost::lexical_cast<int>(cmd.commands[0]);
                int questions_count = boost::lexical_cast<int>(cmd.commands[1]);
                set<Question*> questions = Eits.questions.GetListByTest(test_id);
                if(questions_count <= (int)questions.size()){
                    Question** toSort = new Question*[questions_count];
                    int i=0;
                    for(set<Question*>::iterator it = questions.begin(); it != questions.end(); it++,i++){
                        toSort[i] = (*it);
                    }
                    Test* test = Eits.tests[test_id];
                    Users* users = &Eits.users;
                    string message_start = prefToBytes(SU_START_TEST) + cmd.commands[0] +
                            '\n' + test->Name() +
                            '\n' + cmd.commands[1] +
                            '\n' + cmd.commands[2]+'\n';
                    for(Users::iterator it = users->begin(); it != users->end(); it++){
                        if(!((*it).second)->isAdmin()){
                            for(i=0;i<questions_count;i++){
                                    int random_index = rand()%questions_count;
                                    Question* question = toSort[random_index];
                                    toSort[random_index] = toSort[i];
                                    toSort[i] = question;
                            }
                            string message = "";
                            for(i=0;i<questions_count;i++){
                                    vector<string> answers = toSort[i]->Answers();
                                message += '\n' + boost::lexical_cast<string>(toSort[i]->Id()) +
                                    '\n' + toSort[i]->Name() +
                                    '\n' + boost::lexical_cast<string>(answers.size());
                                for(vector<string>::iterator it_a = answers.begin(); it_a != answers.end(); it_a++){
                                    message += '\n' + (*it_a);
                                }
                            }
                            message.erase(0,1);
                            SocketServer.SendBytes((*it).first,message_start+message);
                        }
                    }
                    delete toSort;
                }
            }
Может быть я вот это неправильно делаю?
C++
1
Question** toSort = new Question*[questions_count];
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
21.05.2010, 12:30
Если
C++
1
Question** toSort = new Question*[questions_count];
то вроде как должен быть
C++
1
delete [] toSort;
а не как у тебя в строке 42
C++
1
delete toSort;
1
14 / 14 / 2
Регистрация: 09.05.2010
Сообщений: 79
21.05.2010, 12:44  [ТС]
Не помогло..
Но теперь отладчик указывает файлы:
Bash
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
*** glibc detected *** /home/user/eits/repos/trunk/eits: malloc(): memory corruption: 0x08088030 ***
======= Backtrace: =========
/lib/i686/cmov/libc.so.6[0xb7a9b256]
/lib/i686/cmov/libc.so.6(__libc_malloc+0x95)[0xb7a9c655]
/usr/lib/libstdc++.so.6(_Znwj+0x27)[0xb7c71fd7]
/usr/lib/libstdc++.so.6(_ZNSs4_Rep9_S_createEjjRKSaIcE+0x64)[0xb7c4cc04]
/usr/lib/libstdc++.so.6(_ZNSs4_Rep8_M_cloneERKSaIcEj+0x38)[0xb7c4d678]
/usr/lib/libstdc++.so.6(_ZNSs7reserveEj+0x50)[0xb7c4e6e0]
/usr/lib/libstdc++.so.6(_ZNSs6appendERKSs+0x53)[0xb7c4eb93]
/home/user/eits/repos/trunk/eits(_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_+0x2c)[0x8052b12]
/home/user/eits/repos/trunk/eits[0x804f50d]
/home/user/eits/repos/trunk/eits[0x805f298]
/home/user/eits/repos/trunk/eits[0x804abd5]
/lib/i686/cmov/libc.so.6(__libc_start_main+0xe5)[0xb7a40455]
/home/user/eits/repos/trunk/eits(_ZNSt8ios_base4InitD1Ev+0x49)[0x804a671]
======= Memory map: ========
08048000-0806b000 r-xp 00000000 03:01 153996     /home/user/eits/repos/trunk/eits
0806b000-0806c000 rw-p 00023000 03:01 153996     /home/user/eits/repos/trunk/eits
0806c000-0813f000 rw-p 0806c000 00:00 0          [heap]
b7600000-b7621000 rw-p b7600000 00:00 0
b7621000-b7700000 ---p b7621000 00:00 0
b77b3000-b77bd000 r-xp 00000000 03:01 47505      /lib/i686/cmov/libnss_files-2.7.so
b77bd000-b77bf000 rw-p 00009000 03:01 47505      /lib/i686/cmov/libnss_files-2.7.so
b77bf000-b77c1000 rw-p b77bf000 00:00 0
b77c1000-b77d6000 r-xp 00000000 03:01 47495      /lib/i686/cmov/libnsl-2.7.so
b77d6000-b77d8000 rw-p 00014000 03:01 47495      /lib/i686/cmov/libnsl-2.7.so
b77d8000-b77da000 rw-p b77d8000 00:00 0
b77da000-b77e3000 r-xp 00000000 03:01 47489      /lib/i686/cmov/libcrypt-2.7.so
b77e3000-b77e5000 rw-p 00008000 03:01 47489      /lib/i686/cmov/libcrypt-2.7.so
b77e5000-b780c000 rw-p b77e5000 00:00 0
b780c000-b7821000 r-xp 00000000 03:01 47493      /lib/i686/cmov/libpthread-2.7.so
b7821000-b7823000 rw-p 00014000 03:01 47493      /lib/i686/cmov/libpthread-2.7.so
b7823000-b7825000 rw-p b7823000 00:00 0
b7825000-b79cb000 r-xp 00000000 03:01 60606      /usr/lib/libmysqlclient_r.so.15.0.0
b79cb000-b7a0f000 rw-p 001a5000 03:01 60606      /usr/lib/libmysqlclient_r.so.15.0.0
b7a0f000-b7a11000 rw-p b7a0f000 00:00 0
b7a11000-b7a25000 r-xp 00000000 03:01 57372      /usr/lib/libz.so.1.2.3.3
b7a25000-b7a26000 rw-p 00013000 03:01 57372      /usr/lib/libz.so.1.2.3.3
b7a26000-b7a28000 r-xp 00000000 03:01 47497      /lib/i686/cmov/libdl-2.7.so
b7a28000-b7a2a000 rw-p 00001000 03:01 47497      /lib/i686/cmov/libdl-2.7.so
b7a2a000-b7b7f000 r-xp 00000000 03:01 47500      /lib/i686/cmov/libc-2.7.so
b7b7f000-b7b80000 r--p 00155000 03:01 47500      /lib/i686/cmov/libc-2.7.so
b7b80000-b7b82000 rw-p 00156000 03:01 47500      /lib/i686/cmov/libc-2.7.so
b7b82000-b7b85000 rw-p b7b82000 00:00 0
b7b85000-b7b91000 r-xp 00000000 03:01 39363      /lib/libgcc_s.so.1
b7b91000-b7b92000 rw-p 0000b000 03:01 39363      /lib/libgcc_s.so.1
b7b92000-b7bb6000 r-xp 00000000 03:01 47485      /lib/i686/cmov/libm-2.7.so
b7bb6000-b7bb8000 rw-p 00023000 03:01 47485      /lib/i686/cmov/libm-2.7.so
b7bb8000-b7c9b000 r-xp 00000000 03:01 55434      /usr/lib/libstdc++.so.6.0.10
b7c9b000-b7c9e000 r--p 000e2000 03:01 55434      /usr/lib/libstdc++.so.6.0.10
b7c9e000-b7ca0000 rw-p 000e5000 03:01 55434      /usr/lib/libstdc++.so.6.0.10
b7ca0000-b7ca7000 rw-p b7ca0000 00:00 0
b7ca7000-b7d88000 r-xp 00000000 03:01 104385     /usr/local/lib/libmysqlcppconn.so.4.1.1.0
b7d88000-b7d92000 rw-p 000e0000 03:01 104385     /usr/local/lib/libmysqlcppconn.so.4.1.1.0
b7d92000-b7ecc000 r-xp 00000000 03:01 75152      /usr/lib/i686/cmov/libcrypto.so.0.9.8
b7ecc000-b7ee2000 rw-p 0013a000 03:01 75152      /usr/lib/i686/cmov/libcrypto.so.0.9.8
b7ee2000-b7ee5000 rw-p b7ee2000 00:00 0
b7ef0000-b7ef3000 rw-p b7ef0000 00:00 0
b7ef3000-b7ef4000 r-xp b7ef3000 00:00 0          [vdso]
b7ef4000-b7f0e000 r-xp 00000000 03:01 39692      /lib/ld-2.7.so
b7f0e000-b7f10000 rw-p 0001a000 03:01 39692      /lib/ld-2.7.so
bffeb000-c0000000 rw-p bffeb000 00:00 0          [stack]
 
Program received signal SIGABRT, Aborted.
[Switching to Thread 0xb77bf6c0 (LWP 2364)]
0xb7ef3424 in __kernel_vsyscall ()
(gdb) bt
#0  0xb7ef3424 in __kernel_vsyscall ()
#1  0xb7a55640 in raise () from /lib/i686/cmov/libc.so.6
#2  0xb7a57018 in abort () from /lib/i686/cmov/libc.so.6
#3  0xb7a9234d in ?? () from /lib/i686/cmov/libc.so.6
#4  0x00000009 in ?? ()
#5  0xbfffdc30 in ?? ()
#6  0x00000400 in ?? ()
#7  0x000001e8 in ?? ()
#8  0xb7b68648 in ?? () from /lib/i686/cmov/libc.so.6
#9  0x00000017 in ?? ()
#10 0xbffffe65 in ?? ()
#11 0x00000020 in ?? ()
#12 0xb7b68661 in ?? () from /lib/i686/cmov/libc.so.6
#13 0x00000002 in ?? ()
#14 0xb7b655d1 in ?? () from /lib/i686/cmov/libc.so.6
#15 0x0000001b in ?? ()
#16 0xb7b68665 in ?? () from /lib/i686/cmov/libc.so.6
#17 0x00000004 in ?? ()
#18 0xbfffe1df in ?? ()
#19 0x00000008 in ?? ()
#20 0xb7b6866b in ?? () from /lib/i686/cmov/libc.so.6
#21 0x00000005 in ?? ()
#22 0x000094f4 in ?? ()
---Type <return> to continue, or q <return> to quit---
#23 0xb7b86595 in ?? () from /lib/libgcc_s.so.1
#24 0x0806b6de in sha256(char const*)::oBuffer ()
#25 0x00000005 in ?? ()
#26 0xbfffe248 in ?? ()
#27 0xb7b6866b in ?? () from /lib/i686/cmov/libc.so.6
#28 0xb7b6866b in ?? () from /lib/i686/cmov/libc.so.6
#29 0x00000005 in ?? ()
#30 0xbfffdb60 in ?? ()
#31 0x00000003 in ?? ()
#32 0xbfffe1df in ?? ()
#33 0x00000008 in ?? ()
#34 0xbfffdb80 in ?? ()
#35 0xb7a92250 in ?? () from /lib/i686/cmov/libc.so.6
#36 0xbfffe1df in ?? ()
#37 0xb7a69cb7 in vfprintf () from /lib/i686/cmov/libc.so.6
#38 0xb7a9b256 in ?? () from /lib/i686/cmov/libc.so.6
#39 0x00000002 in ?? ()
#40 0xb7b68648 in ?? () from /lib/i686/cmov/libc.so.6
#41 0xbffffe65 in ?? ()
#42 0xb7b655d1 in ?? () from /lib/i686/cmov/libc.so.6
#43 0xbfffe1df in ?? ()
#44 0xb7b814e0 in ?? () from /lib/i686/cmov/libc.so.6
#45 0xb7a946b4 in _IO_file_sync () from /lib/i686/cmov/libc.so.6
---Type <return> to continue, or q <return> to quit---
#46 0xb7a9c655 in malloc () from /lib/i686/cmov/libc.so.6
#47 0xb7c71fd7 in operator new () from /usr/lib/libstdc++.so.6
#48 0xb7c4cc04 in std::string::_Rep::_S_create () from /usr/lib/libstdc++.so.6
#49 0xb7c4d678 in std::string::_Rep::_M_clone () from /usr/lib/libstdc++.so.6
#50 0xb7c4e6e0 in std::string::reserve () from /usr/lib/libstdc++.so.6
#51 0xb7c4eb93 in std::string::append () from /usr/lib/libstdc++.so.6
#52 0x08052b12 in std::operator+<char, std::char_traits<char>, std::allocator<char> > (__lhs=@0xbfffe6f8, __rhs=@0xbfffe6f4)
    at /usr/include/c++/4.3/bits/basic_string.h:2087
#53 0x0804f50d in answer (sock=7, r=
        {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xbfffec08 "4у\006\b\230&\b\bЮКЪ©\a"}}) at main.cpp:287
#54 0x0805f298 in Socket::ReadBytes (this=0x806b5e0,
    answer=0x804b49f <answer(int, std::string)>)
    at include/trsys/nb_socket.cpp:152
#55 0x0804abd5 in main () at main.cpp:367
Bash
1
*** glibc detected *** /home/user/eits/repos/trunk/eits: malloc(): memory corruption: 0x08088030 ***
Bash
1
2
#53 0x0804f50d in answer (sock=7, r=
        {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xbfffec08 "4у\006\b\230&\b\bЮКЪ©\a"}}) at main.cpp:287
287 строка в файле в моём предыдущем сообщении - это строка 19:
C++
1
2
3
4
string message_start = prefToBytes(SU_START_TEST) + cmd.commands[0] +
    '\n' + test->Name() +
    '\n' + cmd.commands[1] +
    '\n' + cmd.commands[2]+'\n'; // 287 строка
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
21.05.2010, 13:18
Цитата Сообщение от SSxMe Посмотреть сообщение
287 строка в файле в моём предыдущем сообщении - это строка 19:
C++
1
2
3
4
string message_start = prefToBytes(SU_START_TEST) + cmd.commands[0] +
 '\n' + test->Name() +
 '\n' + cmd.commands[1] +
 '\n' + cmd.commands[2]+'\n'; // 287 строка
Могу предположить, что одна из функций возвращает значение, которое не может быть обработано string'ом. Попоробуй последовательно исключить слагаемые, и посмотри пропадет ошибка или нет.
1
14 / 14 / 2
Регистрация: 09.05.2010
Сообщений: 79
21.05.2010, 13:42  [ТС]
Я часть кода убрал... и для Questions* выделил память статически:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
                // cmd.commands[0] - ID теста
                // cmd.commands[1] - Количество вопросов под выдачу
                // cmd.commands[2] - Время на выполнение теста
                int test_id = boost::lexical_cast<int>(cmd.commands[0]);
                int questions_count = boost::lexical_cast<int>(cmd.commands[1]);
                set<Question*> questions = Eits.questions.GetListByTest(test_id);
                if(questions_count <= (int)questions.size()){
                    Question* toSort[questions_count];// = new Question*[questions_count];
                    int i=0;
                    for(set<Question*>::iterator it = questions.begin(); it != questions.end(); it++,i++){
                        toSort[i] = (*it);
                    }
                    Test* test = Eits.tests[test_id];
Отладчик:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb78a06c0 (LWP 2482)]
0xb7cf69a2 in std::_Rb_tree_increment () from /usr/lib/libstdc++.so.6
(gdb) bt
#0  0xb7cf69a2 in std::_Rb_tree_increment () from /usr/lib/libstdc++.so.6
#1  0xb7cf69fd in std::_Rb_tree_increment () from /usr/lib/libstdc++.so.6
#2  0x080520f4 in std::_Rb_tree_const_iterator<EITSystem::Question*>::operator++ (this=0xbfffc678) at /usr/include/c++/4.3/bits/stl_tree.h:265
#3  0x0804f46a in answer (sock=9, r=
        {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xbfffcde8 "4у\006\b\230&\b\bюмЪ©\t"}}) at main.cpp:10
#4  0x0805e74c in Socket::ReadBytes (this=0x806b8c0,
    answer=0x804b40f <answer(int, std::string)>)
    at include/trsys/nb_socket.cpp:152
#5  0x0804ab45 in main () at main.cpp:371
В 10 строке что-то..
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
21.05.2010, 14:00
1)Что показал эксперимент с message_start?
2)Segmentation fault часто появляется при выходе за пределы массива. А при такой конструкции
Цитата Сообщение от SSxMe Посмотреть сообщение
if(questions_count <= (int)questions.size()){
Question* toSort[questions_count];// = new Question*[questions_count];
int i=0;
for(set<Question*>::iterator it = questions.begin(); it != questions.end(); it++,i++){
toSort[i] = (*it);
}
это вполне ожидаемо.
1
14 / 14 / 2
Регистрация: 09.05.2010
Сообщений: 79
21.05.2010, 14:22  [ТС]
1)Что показал эксперимент с message_start?
с этим всё нормально
2)Segmentation fault часто появляется при выходе за пределы массива. А при такой конструкции
Это я оказался дураком)))
Просто questions_count Может быть меньше, чем questions.size(), поэтому массив toSort надо заполнять до элемента(questions_count-1).. то есть в цикл мне надо было вставить проверку:
C++
1
2
3
4
5
6
int i=0;
for(set<Question*>::iterator it = questions.begin(); it != questions.end();it++,i++){
    if(i<=questions_count){
        toSort[i] = (*it);
    }
}
Но лучше я наверно вместо set буду использовать vector, чтобы не проводить лишних проверок и циклов, тогда будет так:
C++
1
2
3
for(int i=0; i < questions_count;i++){
     toSort[i] = questions[i];
}
Извините, что потратил ваше время на свою глупость)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.05.2010, 14:22
Помогаю со студенческими работами здесь

Valgrind выводит invalid read of size 4
При запуске программы без валгринда она работает исправно, но с валгриндом выводит invalid read of size 4. Как исправить эту ошибку? Хочу...

Invalid allocation size 4294967295 bytes
Здравствуйте! Пытаюсь реализовать алгоритм обхода Грэхема. При запуске приложения появляется критическая ошибка: Invalid allocation size...

Ошибка - invalid allocation size: 4294967292 bytes
Выполняю лабораторную работу №6 в методичке (прикрепил ее в посте), там программа - Многопроцессная обработка данных. Саму программу можно...

Error in `./cxc': realloc(): invalid next size: 0x0000564fd5cfb010
Здравия всем! Опять проблемы с памятью, пытаюсь расширять массив по мере надобности, но в итоге получаю такую ошибку. Вот...

Free(): invalid pointer
Здравствуйте. Пишу простой менеджер контактов (универ. лаба). Использую string и структуры. У менеджера несколько возможностей 1....


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru