|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Я просто акцентирую внимание на том что есть тривиальные чеки (типизация и разыменование wild/null) указателя которую тоже статик-анализатор анализирует но ее-же (эту-же проверку) делает компиллятор (практически всегда) и пишет варнинги. Просто мы эти варнинги игнорируем. Вобщем - толкую о том что не надо с придыханием говорить о статик-анализе. Большая часть проблем была видна гораздо раньше. Просто в нее не смотрели. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2020, 13:40 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky mayton В идеале компиллятор должен и выполнять эти функции. Вообще-то не должен. Задача компилятора генерировать код. Спорное утверждение. Зачем тогда вообще компилятор выдаёт предупреждения, если можно просто генерировать бинарный код? Anatoly Moskovsky Функция анализа кода это задача IDE. Не согласен. Задача IDE -- это текстовый редактор с поддержкой остальных инструментов: система сборки, взаимодействие с отладчиком, дополнительные аддоны. Anatoly Moskovsky Не говоря уже о том что очень много ложных срабатываний для работы с которыми нужна интерактивность. Т.е. компилятор тут никаким боком. Какие ложные срабатывания? Тут задача тривиального анализа врапперов вокруг printf(). С ней справляется gcc, Студия тоже справляется но... через непотребство. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2020, 14:15 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Я немного перепутал топики. Прошу прощения. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2020, 14:27 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton Просто мы эти варнинги игнорируем. всмысле игнорируем? Я если вижу красненькое, то сразу правлю. Это же лютое распиздяйство - красненькое игнорировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2020, 20:14 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky полудух, Все компиляторы оптимизируют это устраняя копирование возвращаемого значения, и по факту функция работает с тем экземпляром куда результат присваивается в вызывающем коде (RVO). А начиная с С++17 это обязательное поведение. Так что можете спокойно возвращать строку. а почему тут сработает? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 09:52 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудуха почему тут сработает? https://en.cppreference.com/w/cpp/language/lifetime Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 12:24 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
что-то многовато там фраз Undefined behavior... куда смотреть то? объект всё ещё жив, но функция то внутри него оживает только в момент вызова и заканчивается по достижении } а потом снова оживает новая ф-я в момент вызова т.е. она не отличается от обычной ф-и в этом плане ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 21:02 |
|
|
start [/forum/topic.php?fid=57&msg=39956476&tid=2017432]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 135ms |
0 / 0 |