170 похожих чатов

Гарантируется ли, что calloc занулит память? Столкнулся с тем, что вызов

memset был "оптимизирован" - зануления не произошло...

28 ответов

19 просмотров

Гарантируется, но про memset ты гонишь

memset можешь соптимизироваться, если после этого память не трогают

Dmitriy-[Отпуск] Автор вопроса
Anatoly Shirokov
Гарантируется, но про memset ты гонишь

Увы, не гоню Ассемблерный выхлоп сейчас гляну, но факт в том, что в участок, ожидающий занулённую память, она не пришла таковой

Есть версия мемсета с гарантированным занулением (внутри просто через volatile зануляет в цикле)

Dmitriy-[Отпуск] Автор вопроса
Anatoly Shirokov
Баг оптимизатора? MRE есть?

Не вышло посмотреть. Впервые вижу, как IDA падает с 0xC0000005 (access violation) при попытке открыть PDB...

Dmitriy-[Отпуск] Автор вопроса
Anatoly Shirokov
Гарантируется, но про memset ты гонишь

Таки гнал, правда... Обнаружилась ошибка, пролежавшая незамеченной месяца три точно - зануляться должен был блок из header_size + bytes_count байт, но учитывалось только последнее значение (а зануление шло с начала блока) Итог - alignof(Ty) байт в конце не занулялись

Dmitriy [Отпуск]
Таки гнал, правда... Обнаружилась ошибка, пролежав...

Мне кажется надо сразу было искать ошибку. Если memset не зануляет, то нахрен он нужен? Что он тогда делает? Ни одна самая дикая оптимизация не должна изменить самой сути работы функции. А если такое есть, то это не оптимизация. Это вредительство.

Dmitriy-[Отпуск] Автор вопроса
d7d1cd
Мне кажется надо сразу было искать ошибку. Если me...

Такая оптимизация есть... Неслучайно пароли никто не зануляет memset`ом)

d7d1cd
Мне кажется надо сразу было искать ошибку. Если me...

Если участок памяти больше нигде не используется — зачем тратить ресурсы на его зануление?

Dmitriy [Отпуск]
Такая оптимизация есть... Неслучайно пароли никто ...

Подробнее? Я пропустил, в смысле с мемсетом что то не так?

Dmitriy-[Отпуск] Автор вопроса
Roy Mustang
Подробнее? Я пропустил, в смысле с мемсетом что то...

Какие люди!) Например, тут описано: https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-rtlsecurezeromemory RtlZeroMemory - простой вызов memcpy И в гугле подобное найти можно...

d7d1cd
Мне кажется надо сразу было искать ошибку. Если me...

А то что компилятор может заменить беск. цикл на return false тебя не смущает? Или якобы конечный цикл (полагаемся на переполнение знакового) на бесконечный? Правило "что вижу то и делает" в С++ не работают.

Гарантируется. Где ты там ловил memset не понятно совсем. С чего ты взял что он должен вызываться?

Dmitriy [Отпуск]
Увы, не гоню Ассемблерный выхлоп сейчас гляну, но ...

Ассемблерный выхлоп никогда ничего не доказывает

А если объявить эту переменную как volatile?

Dmitry B.
А если объявить эту переменную как volatile?

Да даже если б это помогло - КАК ? Тут нет переменной, она динамическая

Dmitry B.
А если объявить эту переменную как volatile?

Напиши кусочек кода как это ты предполагаешь сделать

можно пруф

Kirill Bolshakov
А то что компилятор может заменить беск. цикл на r...

Про замену бесконечного на return false смущает. Ведь проги для микроконтроллеров так и пишут: там бесконечный цикл, в котором и прописана вся основная работа железки. Про замену конечного цикла с переполнением знакого не смущает. Переполнение знакового - это уб, поэтому ожидаемо непонятый результат.

Danya🔥
Если участок памяти больше нигде не используется —...

У @DymOK, как я понял, участок памяти использовался. Если функция написана правильно, без уб, (а memset, очевидно, написан без уб), то ее правильный вызов должен привести к тому, что в функции заложено. И никакая оптимизация не должна менять этого. И если ты видишь, что как будто оптимизация что-то поменяла в поведении, то надо искать ошибку в своем коде, а не в оптимизаторе или в стандартной функции. А иначе как писать программы то тогда?

d7d1cd
Про замену бесконечного на return false смущает. В...

На мк чтение/запись в volatile переменные, выведенные в порты, не дает выкинуть цикл

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта