Вопрос по С, скажите пожалуйста, безопасна ли такая конструкция? 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

  1. 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

                                  мммм ... не уверен значит указатель должен быть

Не нашли ответ?

Вам также может быть интересно