LINUX.ORG.RU

нужен совет по фиксу странного поведения string::operator+()

 , ,


0

3

при стечении обстоятельств оператор '+' класса string как-бы не отрабатывает: возвращает первую строку вместо суммы строк. как отловить эту багу? она стабильно проявляется в случайных участках кода

★★★★★

Ответ на: комментарий от YarikRock

я не пользую операторов отличных от + и = так что не представляю где здесь может быть трабла с приоритетом

cvv ★★★★★
() автор топика
Ответ на: комментарий от Reset

Да - ничего подозрительного не находит

cvv ★★★★★
() автор топика

Где-то памяти портишь, видимо.

panter_dsd ★★★★
()
Ответ на: комментарий от cvv

собери другим компилятором, а лучше на другой системе и другим компилятором.

Dudraug ★★★★★
()
Ответ на: комментарий от cvv

Если конкретно вот этот кусок вынести в файл и скомпилировать отдельно в самостоятельную программу - бага воспроизводится?

Deleted
()
Ответ на: комментарий от Gvidon

ага, я не заметил, что у него std::string. УМВР.

x0r ★★★★★
()
Ответ на: комментарий от x0r

оба оператора ведут себя совершенно одинаково в этих загадочных участках кода.

cvv ★★★★★
() автор топика
Ответ на: комментарий от Deleted

нет, не воспроизводится.

магических макросов в коде нету что еще польше повергает меня в смятение.

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

Память где-то треш. Выход за границы массива проверь же.

Dudraug ★★★★★
()
Ответ на: комментарий от cvv

Мерзкий тип ошибок. Где-то память запорол и тут огреб. Это где-то найти очень трудно.

panter_dsd ★★★★
()
Ответ на: комментарий от cvv

нет, не воспроизводится

Может дадите конкретный кусок кода, а не пример? Или все так секретно?

no-such-file ★★★★★
()

а это может быть следствием использования using namespace в заголовках? здесь их больше чем достаточно :(((

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

Маловероятно, скорее всего что-то с памятью. Постарайся максимально локализовать баг и сделать пример, на котором он воспроизведётся

Gvidon ★★★★
()

А std::string::assign не используешь? А то может где-то обсчитался и '\000' попал в строку?

anonymous
()
Ответ на: комментарий от anonymous

ничего подозрительного не находит

cvv ★★★★★
() автор топика
Ответ на: комментарий от Gvidon

зачистил все using в заголовках и это действительно ничего не изменило в поведении проги.

cvv ★★★★★
() автор топика

Посмотри size() сторки до и после аппенда. Если изменится, вероятно внутрь строки попали лишние коды \0, которые обрывают печать, т.е. строки будут реально слиты, но при распечатывании этого не видно.

staseg ★★★★★
()
Ответ на: комментарий от staseg

Спасибо, это ценное замечание. поробую.

cvv ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.