69 / 62 / 13
Регистрация: 10.01.2012
Сообщений: 508
|
||||||
1 | ||||||
При склеивании строк в цикле, уже на пятом цикле возникает переполнение памяти16.06.2014, 12:34. Показов 1517. Ответов 8
Метки нет (Все метки)
При склеивании строк в цикле, уже на пятом цикле возникает переполнение памяти.
Что не так и как правильно сделать? Не пинайте нуба!
"beep&address/owner/ru/seller-stend-intro&beep&beep&address/owner/ru/stops/1&address/owner/ru/automobils&ru/digits/0&address/owner/ru/stopscl/button1&beep&beep&address/owner/ru/stops/2&address/owner/ru/automobils&ru/digits/1&address/owner/ru/stopscl/button2&beep&beep&address/owner/ru/stops/3&address/owner/ru/automobils&ru/digits/1&address/owner/ru/stopscl/button3&beep&beep&address/owner/ru/stops/4&address/owner/ru/automobils&ru/digits/0&address/owner/ru/stopscl/button4&beep&beep&address/owner/ru/stops/5&address/owner/ru/automobils&ru/digits/1&address/owner/ru/stopscl/button5&beep&beep&address/owner/ru/stops/6&address/owner/ru/automobils&ru/digits/4&address/owner/ru/stopscl/button6&beep&beep&address/owner/ru/stops/7&address/owner/ru/automobils&ru/digits/1&address/owner/ru/stopscl/button7&beep&beep&address/owner/ru/stops/8&address/owner/ru/automobils&ru/digits/0&address/owner/ru/stopscl/button8&beep&beep&address/owner/ru/stops/9&address/owner/ru/automobils&ru/digits/6&address/owner/ru/stopscl/button9&beep&beep&address/owner/ru/stops/10&address/owner/ru/automobils&ru/digits/7&address/owner/ru/stopscl/button10&address/owner/ru/seller-final&address/general/ru/ballance&ru/digits/9&beep&address/owner/ru/seller-stend-intro&beep&beep&address/owner/ru/stops/1&address/owner/ru/automobils&ru/digits/0&address/owner/ru/stopscl/button1&beep&beep&address/owner/ru/stops/2&address/owner/ru/automobils&ru/digits/1&address/owner/ru/stopscl/button2&beep&beep&address/owner/ru/stops/3&address/owner/ru/automobils&ru/digits/1&address/owner/ru/stopscl/button3&beep&beep&address/owner/ru/stops/4&address/owner/ru/automobils&ru/digits/0&address/owner/ru/stopscl/button4&beep&beep&address/owner/ru/stops/5&address/owner/ru/automobils&ru/digits/1&address/owner/ru/stopscl/button5&beep&beep&address/owner/ru/stops/6&address/owner/ru/automobils&ru/digits/0&address/owner/ru/stopscl/button6&beep&beep&address/owner/ru/stops/7&address/owner/ru/automobils&ru/digits/0&address/owner/ru/stopscl/button7&beep&beep&address/owner/ru/stops/8&address/owner/ru/automobils&ru/digits/0&address/owner/ru/stopscl/button8&beep&beep&address/owner/ru/stops/9&address/owner/ru/automobils&ru/digits/0&address/owner/ru/stopscl/button9&beep&beep&address/owner/ru/stops/10&address/owner/ru/automobils&ru/digits/0&address/owner/ru/stopscl/button10&address/owner/ru/seller-final&address/general/ru/ballance&ru/digits/9"
0
|
16.06.2014, 12:34 | |
Ответы с готовыми решениями:
8
Запись строк в текстовый файл в цикле при некотором условии Как програмно в цикле не доходя до конца, пропустить шаг в цикле? Переменная, которая только что использовалась в цикле в качестве счётчика в следующем цикле не используется Почему начинающаяся с точки с запятой строка из текстовогого файла пропускается при разборе строк в цикле FOR? |
40 / 37 / 15
Регистрация: 25.10.2012
Сообщений: 112
|
||||||
16.06.2014, 18:48 | 2 | |||||
Вы, вероятно, ожидаете, что здесь strlen() вернёт 1024, но это предположение неверно.
Скорее всего, это будет 0, вследствие чего и возникает переполнение.
Попробуйте исправить код, например, так:
0
|
69 / 62 / 13
Регистрация: 10.01.2012
Сообщений: 508
|
|
16.06.2014, 18:59 [ТС] | 3 |
К сожалению не помогло. На том же (пятом) цикле отвалилось выполнение с ошибкой "*** buffer overflow detected ***: "
0
|
40 / 37 / 15
Регистрация: 25.10.2012
Сообщений: 112
|
|
16.06.2014, 19:08 | 4 |
Хотелось бы поглядеть на вывод отладчика в таком случае.
0
|
69 / 62 / 13
Регистрация: 10.01.2012
Сообщений: 508
|
||||||
16.06.2014, 22:59 [ТС] | 5 | |||||
Надеюсь это нужно ?! Это тот момен когда спотыкается. Ах, да - выводится с низу вверх!
Данных мало? Выложить всю "портянку"?
0
|
69 / 62 / 13
Регистрация: 10.01.2012
Сообщений: 508
|
|
17.06.2014, 23:40 [ТС] | 6 |
Решилось тем, что не только буферу нужно было динамить, но и final потому, что в него пишется более чем [1024]
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
||||||
18.06.2014, 03:08 | 7 | |||||
zoleg, как вариант:
0
|
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
|
||||||
08.07.2014, 13:34 | 8 | |||||
В линуксе есть strlcat. Это мне приходится его эмулировать, как видите... Вроде нигде не напутал. Проверяйте!
0
|
deleted
177 / 50 / 5
Регистрация: 29.03.2013
Сообщений: 365
|
|
17.09.2014, 19:26 | 9 |
Уважаемые склеильвальщики, не надо изобретать велосипед с маллоками и реалакоми. Есть функция open_memstream, она и память сама выделит сколько нужно и когда нужно, а ты просто добавляешь туда строки, будто в файл и в ус не дуешь при этом
0
|
17.09.2014, 19:26 | |
17.09.2014, 19:26 | |
Помогаю со студенческими работами здесь
9
Оптимизирует ли компилятор выражения в цикле типа 90*M_PI или каждую итерацию в цикле считает заново? Как обратиться к уже созданным на форме label'ам в цикле? Выделение памяти в цикле В цикле возникает ошибка "String index out of range" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |