Последствия распределения памяти статических членов данных
Центр знаний IBM C утверждает, что объявление статического члена данных в списке членов класса не является определением, требующим определения за пределами класса декларации в сфере действия названия. Это поднимает вопрос о том, почему это необходимо и каковы схематические последствия относится к распределению памяти.
в соответствии с правилом Один определения, каждый статический объект в программе должен быть определен ровно один раз. Если объявление статического объекта в файле заголовка было определением, это приведет к нескольким определениям в разных единицах перевода, нарушающих правило.
, чтобы избежать этого, объявление в файле заголовка не является определением. Вместо этого одно определение должно быть предоставлено за пределами определения класса, обычно в исходном файле первичной единицы перевода. Это гарантирует, что статический объект определяется только один раз во всей программе, придерживаясь правила одного определения.
] С точки зрения распределения памяти, статические элементы данных выделяются в специальном сегменте памяти, известного как статический сегмент данных. Они инициализируются только один раз, во время стартапа программы и сохраняют свои ценности на протяжении всей жизни программы. Это в отличие от нестатических элементов данных, которые выделяются в стеке или кучи, когда объект создается и уничтожается при уничтожении объекта.
]Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3