Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Занулить структуру
|
|||
|---|---|---|---|
|
#18+
Есть структура, допустим такая: Код: plaintext 1. 2. 3. 4. 5. 6. Нужно при инстанцировании объекта этой структуры занулить все поля. Понятно, что можно тупо прописать присваивание нулей всех полям. Вопрос вот в чём, часто вижу такую форму создания структур: Код: plaintext 1. такой синтаксис присваивает ноль только первому члену или всем членам структуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2013, 16:55 |
|
||
|
Занулить структуру
|
|||
|---|---|---|---|
|
#18+
Poppler Код: plaintext 1. такой синтаксис присваивает ноль только первому члену или всем членам структуры? Указанное значение (в данном случае 0) инициализирует соответствующее по порядку поле. Поля для которых значения не указаны, инициализируются значением по умолчанию T(). Для числовых типов оно равно 0. Т.е. например в следующем коде первое поле инициализируется 1, а следующие за ним - нулями. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2013, 19:02 |
|
||
|
Занулить структуру
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyPoppler Код: plaintext 1. такой синтаксис присваивает ноль только первому члену или всем членам структуры? Указанное значение (в данном случае 0) инициализирует соответствующее по порядку поле. Поля для которых значения не указаны, инициализируются значением по умолчанию T(). Для числовых типов оно равно 0. Т.е. например в следующем коде первое поле инициализируется 1, а следующие за ним - нулями. Код: plaintext 1. А в чистом C так же? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2013, 20:28 |
|
||
|
Занулить структуру
|
|||
|---|---|---|---|
|
#18+
в чистом C, Да, в С то же самое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2013, 23:01 |
|
||
|
Занулить структуру
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyУказанное значение (в данном случае 0) инициализирует соответствующее по порядку поле. Поля для которых значения не указаны, инициализируются значением по умолчанию T(). Для числовых типов оно равно 0. А почему, если написать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. студия в debug режиме показывает, что поля не проинициализированы и в них мусор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2013, 13:17 |
|
||
|
Занулить структуру
|
|||
|---|---|---|---|
|
#18+
А GCC показывает , что поля занулены. Почему так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2013, 13:21 |
|
||
|
Занулить структуру
|
|||
|---|---|---|---|
|
#18+
Popplerстудия в debug режиме показывает, что поля не проинициализированы и в них мусор? это не мусор, а специальные значения, которые отладчик трактует как неициализированные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2013, 13:52 |
|
||
|
Занулить структуру
|
|||
|---|---|---|---|
|
#18+
PopplerAnatoly MoskovskyУказанное значение (в данном случае 0) инициализирует соответствующее по порядку поле. Поля для которых значения не указаны, инициализируются значением по умолчанию T(). Для числовых типов оно равно 0. А почему, если написать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. студия в debug режиме показывает, что поля не проинициализированы и в них мусор? Вы так спрашиваете как будто я выше обещал что там не будет мусора В данном случае инициализатор не указан, поэтому действуют следующие правила. Если это объявление глобальной или статической переменной (не путать со статическим членом класса) то все члены инициализируются нулями. Если это локальная автоматическая переменная то никакой инициализации вообще не производится, там мусор. То что в некоторых случаях там нули вместо мусора - это могут быть внутренние потребности компилятора, на которые вы никак не должны рассчитывать. Я уже не говорю о том что мусор во многих случаях тоже может быть нулями, т.к. очень часто стек только что запущенной программы (а именно в стеке создаются локальные переменные) содержит довольно большие участки с нулями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2013, 22:47 |
|
||
|
Занулить структуру
|
|||
|---|---|---|---|
|
#18+
ИМХО, задачи очистки памяти лежат на ядре ОС(как реализовано выделение памяти прикладным программам) То что конкретная реализация компилятора как-то инициализирует память - это свойство этого компилятора В общем случае - там мусор и инициализировать лучше самому принудительно Или правила инициализации где-то в стандарте прописаны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 12:16 |
|
||
|
Занулить структуру
|
|||
|---|---|---|---|
|
#18+
landyИли правила инициализации где-то в стандарте прописаны? Конечно прописаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 15:17 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38172403&tid=2020404]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
192ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 294ms |

| 0 / 0 |
