@ProCxx

Страница 806 из 2477
Alexander
21.04.2017
18:51:01
У меня наоборот
странно... не было ещё ни одного случая, когда libasan не нашёл бы того, что нашёл valgrind. Кстати, ты не пробовал вместе юзать их? Как оно?

Sheldon
21.04.2017
18:51:45
мог испортиться сам строковый литерал, например)
Они же в read-only памяти по умолчанию. Упало бы раньше.

Alexander
21.04.2017
18:53:05
Google
Evgeniy
21.04.2017
18:55:02
Sheldon
21.04.2017
18:55:29
Есть на это гарантии Стандарта?
Есть UB при попытке их изменить (const жеж). Гарантии segfault'a, естественно, нет, но на практике компилятор всегда помещает их в .rodata сегмент, который мапится как read-only.

Sheldon
21.04.2017
19:01:53
UB не стоит понимать буквально, в большинстве случаев поведение на конкретной платформе с конкретным компилятором достаточно определенное.

Alexander
21.04.2017
19:02:55
Undefined - полностью неопределённое. Unspecified - стандарт даёт несколько вариантов, а какой из них - это уже на волю компила

вроде так, если не напутал

Ну и это вдогонку: http://stackoverflow.com/questions/2397984/undefined-unspecified-and-implementation-defined-behavior

Evgeniy
21.04.2017
19:06:35
Нет, это неверно. То, что Вы говорите - это implementation-defined
Ну любое неопределенное поведение в итоге как-то определено

Alexander
21.04.2017
19:06:54
Ну любое неопределенное поведение в итоге как-то определено
смысл в том, описывается ли это в спецификации компилятора

Ну любое неопределенное поведение в итоге как-то определено
и ни у кого нет гарантий, что там при UB не стоит rand() % 42

Google
Sheldon
21.04.2017
19:09:09
Разработчики компиляторов адекватные люди.

Evgeniy
21.04.2017
19:09:17
и ни у кого нет гарантий, что там при UB не стоит rand() % 42
Ну гарантий нет, но если стоит rand%42 уже 8 версий и никто код не трогает, то это вполне определенно)

Alexander
21.04.2017
19:09:30
Разработчики компиляторов адекватные люди.
Никто этого не отрицает. Но факт остаётся фактом - UB есть UB

Sheldon
21.04.2017
19:10:21
если

Я говорю о том, что такой код: ''' int* x = nullptr; *x = 123; ''' скомпилированный череез g++\clang на x86(-64) под линуксом гарантированно дает segfault хоть это и UB. Ядерные ракеты такой код (внезапно!) не запустит.

не те 'кавычки' -_-

Alexander
21.04.2017
19:16:04
Я говорю о том, что такой код: ''' int* x = nullptr; *x = 123; ''' скомпилированный череез g++\clang на x86(-64) под линуксом гарантированно дает segfault хоть это и UB. Ядерные ракеты такой код (внезапно!) не запустит.
1) Вы наложили неплохое такое ограничение на: компиляторы, платформу, ОС. 2) Нет гарантий, что не запустит (по крайней мере гарантий со стороны Стандарта)

Antony
21.04.2017
19:18:29
А если он энтропию от проца берёт??
Ещё хуже... Современные компиляторы оптимизируют основвываясь на UB. Если код с UB работает на gcc-6.2, то на gcc-6.3 могут добавить оптимизацию и код работать перестанет.

Alexander
21.04.2017
19:19:02
Antony
21.04.2017
19:19:23
Да, я из него черпал инфу :)

Alexander
21.04.2017
19:19:26
https://www.youtube.com/watch?v=4GUuek7_OhU

Alexander
21.04.2017
19:22:03
Alexander
21.04.2017
19:32:43
Речь с самого начала шла о таких ограниченниях
не вижу, где мы накладываем такое ограничение. Можешь подсказать? ?

Evgeniy
21.04.2017
19:33:08
UB не стоит понимать буквально, в большинстве случаев поведение на конкретной платформе с конкретным компилятором достаточно определенное.

Alexander
21.04.2017
19:34:11
UB не стоит понимать буквально, в большинстве случаев поведение на конкретной платформе с конкретным компилятором достаточно определенное.
а, ты про это. Согласен, это ограничение. Но это не отменяет того факта, что UB - это игра в лотерею. О чём, кстати, и говорит фраза "в большинстве случаев"

Alex Фэils?︙
21.04.2017
19:42:02
Внезапно этот код работает если вы пишите под BIOS
Да в любом месте, где разрешена запись в нулевой адрес. Где-т тут на днях была статья про фишку ядра линя, связанную с тем, что где-то нуллптр был writable, а разрабы в некоторых местах писали в него с надеждой, что писать туда нельзя ( т.е., для падения ядра)

Google
Alex Фэils?︙
21.04.2017
19:45:26
Хз, мб ща найду

Igor
21.04.2017
20:00:21
#include <iostream> int main (){ std::cout << "Hello World!"; return 0; }

/tmp/ccea35T1.o: In function `main': learn.cpp:(.text+0xa): undefined reference to `std::cout' learn.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' /tmp/ccea35T1.o: In function `__static_initialization_and_destruction_0(int, int)': learn.cpp:(.text+0x3d): undefined reference to `std::ios_base::Init::Init()' learn.cpp:(.text+0x4c): undefined reference to `std::ios_base::Init::~Init()' collect2: error: ld returned 1 exit status

Вот почему, нльзя сесть спокойно ипо урокам делать??

Мне дали ссылку на уроки learncpp.com

Вот написал как там написано и вот что.

Подскажите плиз чо за фигня.

Aldar
21.04.2017
20:02:46
это уже С++, там компилятор С?

Igor
21.04.2017
20:04:51
Ну я делаю gcc file.cpp

/dev
21.04.2017
20:06:42
Igor
21.04.2017
20:09:05
Извиняюсь за тупость.

Admin
ERROR: S client not available

fox.cpp
21.04.2017
20:32:23
Парни, есть какие-нибудь каналы в телеграме по C++?

Alexander
21.04.2017
20:32:49
Уже вот тут

Добро пожаловать

fox.cpp
21.04.2017
20:33:03
> каналы

Varkus
21.04.2017
20:34:19
?

Alexander
21.04.2017
20:34:39
А, в глаза долблюсь, бывает )

Alex Фэils?︙
21.04.2017
20:40:45
также по новостям туда можно мне в лс писать

Google
Alexander
21.04.2017
23:32:31
А по Qt есть какие-нибудь живые чаты и каналы? Язык не важен, лишь бы поговорить можно было.

Alex Фэils?︙
21.04.2017
23:34:41
тут можно. и в супапро. отдельных чатов не видел, но можно создать, если будет народ

Sergey
21.04.2017
23:34:49
да можно и сюда я думаю

тут кутешников много, я один из них

алсо вот, ребят. вспомнил. поставил сегодня на пробу resharper - плагин для V2013. прогнал его на одном проекте. и он выдал такое странное предупреждение. суть в следующем

class C { public: C() { val |= some_bitmask; // warning - value may be unitialized } int val = 0; }

ну примерно так

мне казалось - если с C++11-style что-то инициализируется, то в теле конструктора оно уже присвоено, разве нет?

т.е. порядок инициализации - вроде он такой

список инициализации, затем инициализация в объявлении класса, затем уже тело конструктора

я видимо не прав?

в дебаггере погонял - так и есть

Alexander
21.04.2017
23:40:35
а значение битмаски какое?

Sergey
21.04.2017
23:40:59
какое-то. неважно. 2,4,8, ... - какие-то биты

Vladislav
21.04.2017
23:41:01
может он про some_bitmask?

Sergey
21.04.2017
23:41:06
это просто так

Страница 806 из 2477