Сколько таких foo () будет выполнено, эти статические переменные будут введены в сегмент данных.
Нет.Вы получаете только один foo()::a
.В этом вся суть.
Будет ли компилятор выполнять ленивую инициализацию и в учетной записи, выделяя место для сегмента данных.Если «Нет», вызовет ли это ошибку сегментации во время выполнения кода?(более вероятно, когда много статических данных внутри методов шаблона).
Похоже, вы спрашиваете, не закончится ли раздел .data
(и, следовательно, дальнейшая запись в него может привести к повреждениюошибки), если у вас слишком много объектов static
.
Что ж, как уже было отмечено выше, во время компиляции известно, сколько места вам понадобится для статического хранения (также для создания экземпляров шаблонов функций).Вы не получаете больше foo()::a
каждый раз, когда вызываете функцию, поэтому нет элемента времени выполнения для определения того, сколько места потребуется.