Вопрос по С, скажите пожалуйста, безопасна ли такая конструкция? struct Stat { uint32_t field1; uint32_t field2; uint32_t field3; inline void clear(){memset(this, 0, sizeof(Stat));} } В методе clear() очищаем все поля чтобы не вызывать по отдельности field1 = 0, field2 = 0, field3 = 0
Комментарии: 25
Sergei
нет
Maxim
Нет Компилятор может выкинуть мемсет
Serg
Почему?
Maxim
Результат не используется
Serg
В это конкретном случае или вообще может выкинуть?
Maxim
Вообще
Serg
На каком основании?
Maxim
^ Он и твои field = 0 при желании может выкинуть
Dolphin
volatile
Maxim
По-моему, тоже без гарантии. но тут я не уверен
Dolphin
Я честно сказать Серегину запись ваще нихуя не понял. У него функция - часть структуры?
Serg
Исходим из варианта, что ничего не выкидывает да
Maxim
Что ты понимаешь под "безопасно"? Безопасно = данные не утекут или безопасно = память не попортит?
Serg
Не очистит ли чего лишнего
Maxim
А, тогда все норм
Serg
Или может недочистит все поля структуры
Dolphin
Очистит код функции тоже попадает в размер
Serg
оо
Dolphin
покажи листинг в асме
Maxim
Щито?
Dolphin
у него инлайн же
Maxim
Так это же структура Инлайн будет туда, где вызывается А данные-то останутся такими же
Dolphin
мммм ... не уверен значит указатель должен быть