@ProCxx

Страница 2454 из 2477
Alexander
21.10.2018
11:35:41
если compiler не specific, то пока что нет - жди SIMD в стандартной либе. если compiler-specific, то у того же clang есть управление векторизацией

Kitsu
21.10.2018
11:36:39
Есть какие-нибудь директивы для энфорса векторизации в рамках блока кода/функции? Можно compiler-specific (clang/gcc)
Постоянная рубрика: "сам спросил - сам ответил" #pragma clang loop vectorize(enable) interleave(enable) #pragma clang loop unroll_count(1337) #pragma clang loop unroll(disable) #pragma clang loop unroll(full)

Anatoly
21.10.2018
15:36:13
Влад @supapro

Google
Nikita
21.10.2018
17:45:58
ребят, сдвиг беззнакового числа больше чем на его ширину это уб?

Igor
21.10.2018
17:46:10
уб?

Nikita
21.10.2018
17:47:35
UB

просто сдвиг уинт 32 на 32 бита компилер вообще выбрасывает, т.е. число не меняется

Hudd
21.10.2018
17:50:39
Нет, ошибся. Да, это UB.

Nikita
21.10.2018
17:55:30
сдвиг уинт32 на 32 бита это 0
wandbox считает иначе

Hudd
21.10.2018
17:56:16
The operands shall be of integral or unscoped enumeration type and integral promotions are performed. [...] The behavior is undefined if the right operand [...] greater than or equal to the length in bits of the promoted left operand.

просто сдвиг уинт 32 на 32 бита компилер вообще выбрасывает, т.е. число не меняется
Кстати, вот что пишут про x86 shl/shr: The count is masked to 5 bits, which limits the count range to 0 to 31.

Rabu
21.10.2018
18:02:56
стандарт не гарантирует, но по крайней мере GCC делает sal/shr https://godbolt.org/z/SzPv_G

Олег
21.10.2018
18:06:47
Я когда-то наталкивался на то, что в compile-time после сдвига на 32 получается ноль (как по арифметике), а в runtime — число не меняется, как по процессору.

Google
Alexen
21.10.2018
18:24:42
С того что язык не регламентирует это

Ilia
21.10.2018
18:24:53
С того что язык не регламентирует это
Там уж не по это тогда надо говорить , а про переполнение целого. Я могу 0xFFFFFFFE и всего на один бит сдвинуть....

Alexen
21.10.2018
18:29:21
Сдвинуть можешь хоть куда но величина сдвига не может быть большей чем число бит в том что сдвигаешь

Max
21.10.2018
18:43:17
Там уж не по это тогда надо говорить , а про переполнение целого. Я могу 0xFFFFFFFE и всего на один бит сдвинуть....
Не, так можно. 'For unsigned and positive a, the value of a << b is the value of a * 2b , reduced modulo maximum value of the return type plus 1 (that is, bitwise left shift is performed and the bits that get shifted out of the destination type are discarded).'

А вот 'if the value of the right operand is negative or is greater or equal to the number of bits in the promoted left operand, the behavior is undefined.'

Alexen
21.10.2018
18:44:58
@DemyanovMaxim в отличие от мерзкого го который таки подвинет

Max
21.10.2018
18:54:17
@DemyanovMaxim в отличие от мерзкого го который таки подвинет
Что поделать. Го идеологически может запихнуть пачку проверок и условий, о которых ты не просил. А цпп - нет.

Alexen
21.10.2018
18:55:01
ну да, я на эти сдвиги напоролся когда битовую библиотеку делал

olologin
21.10.2018
20:17:50
Господа, под виндой санитайзеры не пробовали?

Клангом, или gcc

Просто интересно оно вообще там будет работать

в винде же нет overcommit memory

https://github.com/google/sanitizers/issues/895

Кажется почти все санитайзеры не работают там

Alexander
21.10.2018
21:04:50
Можно и не пробовать. И я не слышал, чтобы кто-то активно их портировал туда

Побитый
21.10.2018
21:06:22
Валгринд работает

Или это не считается?

Google
Alexander
21.10.2018
21:07:16
Валгринд работает
это не санитайзер

Побитый
21.10.2018
21:07:27
это не санитайзер
А в чем разница?

olologin
21.10.2018
21:07:30
Валгринд работает
Каким образом? Через прослойку?

Побитый
21.10.2018
21:07:36
Alexander
21.10.2018
21:07:37
А в чем разница?
в принципе работы

olologin
21.10.2018
21:08:00
А в чем разница?
https://github.com/google/sanitizers/wiki/AddressSanitizerComparisonOfMemoryTools

Alexander
21.10.2018
21:08:00
я всегда думал, что на винде аналог валгнринда это dr memory (который и под линухом уже есть)

olologin
21.10.2018
21:08:26
Ну так то по списку фич ASAN намного вперёд уходит

жаль что uninitialized read нет

вернее он есть только в memory sanitizer'е которого нет и не будет в gcc

ну и скорость у асана конечно несравнима

с valgrind

Побитый
21.10.2018
21:10:03
в принципе работы
А в чем разница? И там и там во время работы программы выявляем жепу

olologin
21.10.2018
21:10:59
>Currently, Dr. Memory does not yet support uninitialized read detection for 64-bit applications, so we recommend compiling your target application as 32-bit.

мда

Ilia
21.10.2018
22:15:35
Только что перепутал Conan с Canon-ом...

Pavel
21.10.2018
22:21:02
у вижлы есть свои санитайзеры же

Visual leak detector вроде, но это конечно под visual c++ но если надо на винду...

Vyacheslav
21.10.2018
22:25:54
Yuriy
21.10.2018
22:51:16
задавал в @supapro но так и не получил ответ... буду благодарен за любого рода предположения!

Google
Yuriy
21.10.2018
22:51:16
Всем привет ??! Добрые люди, подскажите! Есть клиент и сервер! Запускаю все локально в разных потоках. Сервер также под каждый подключённый клиент создаёт поток. Вот к примеру есть 2 клиента и они общаются с сервером. После подключения с одного клиента я могу отправлять неопределенное количество смс, но как только я начинаю отправлять с другого клиента 2 и больше сообщений то при повторной попытке отправить смс с первого клиента - сервер не хочет их принимать! В чем может быть проблема ? Может с потоками что-то не так ?

Alexei
22.10.2018
04:59:59
Доброе утро! Что почитать чтобы прошариться по constexpr'ам?

C++17 если я правильно помню

Nikita
22.10.2018
05:13:00
C++17 если я правильно помню
ну constexpr'ы завезли ещё в C++11

Alexei
22.10.2018
05:27:33
Я имею ввиду полные constexpr, на конструкторы и их методы с членами, а не просто на функции...

Alexander
22.10.2018
05:58:07
Можно и не пробовать. И я не слышал, чтобы кто-то активно их портировал туда
Возможно, это как-то связано с тем, что ApplicationVerifier существовал до появления asan etc . :)

Dmitry
22.10.2018
06:32:34
Ересь придумал. Мапить на нулевой адрес zero initialized write protected страницу. Тогда получаем nullptr эквивалентным пустой c строке. Или валидное разыменование nullptr как указателя на zero initialized структуру. Например как адрес пустого string view с нулевым размером ссылающегося на пустую c строку (см. выше).

Аттрибутивно-ассоциативный ряд
22.10.2018
06:51:15
На некотором железе так и работает. 0x0 валидный адрес.

Yuriy
22.10.2018
07:07:14
Сервер accept делает?
постоянно, при этом если кто то новый подключился он ему дает новый поток

Борис
22.10.2018
07:10:41
постоянно, при этом если кто то новый подключился он ему дает новый поток
Как бы потоки и аксепт вещи не связанные. Попробуй всё в одном потоке.

Yuriy
22.10.2018
07:11:26
Как бы потоки и аксепт вещи не связанные. Попробуй всё в одном потоке.
я не так выразился - после подключения он создает новый поток

Борис
22.10.2018
07:14:00
я не так выразился - после подключения он создает новый поток
И сервер и клиент это твой код? Перепиши сервер в один поток. Бритва оккама.

Nikolai
22.10.2018
07:14:07
Yuriy
22.10.2018
07:17:16

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