c ++ статический нестатический - PullRequest
1 голос
/ 14 марта 2011

в c ++, где находятся статические или нестатические переменные?Я имею в виду в памяти.

и, Когда инициализируются статические или нестатические переменные?

Нужен ли кто-нибудь, чтобы помочь мне прояснить мои мысли.Спасибо!

а что с С?то же самое?

Ответы [ 3 ]

11 голосов
/ 14 марта 2011

Они могут использоваться там, где компилятор (или компоновщик, или загрузчик) хочет поместить их в память, стандарты C и C ++ не требуют такого уровня детализации.Они только предписывают поведение .

Обычно статические элементы инициализируются один раз, либо при запуске программы (в том числе во время компиляции, чтобы они просто загружались в уже инициализированном состоянии), либонепосредственно перед первым использованием.

0 голосов
/ 14 марта 2011

Статики идут в том же месте, что и глобальные переменные, которые, как правило, определяются компилятором, и создаются при загрузке программы и сохраняются до ее завершения

Нестатики идут туда, куда вы их кладете (в стек или в кучу)

0 голосов
/ 14 марта 2011

Место проживания нестатических членов зависит от того, как создается объект.

class foo
{
    int num ; // Non-Static member 
    // ....
};

foo obj ; // In this case `num` resides on stack. In fact, obj it self resides on stack
foo *temp = new foo;  // In this case `num` resides on heap or in memory location acquired from the free store.

Я не уверен насчет статических членов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...