в С++, где остаются статические или нестатические переменные? Я имею в виду в памяти.
и Когда инициализируются статические или нестатические переменные?
Мне нужен кто-то, чтобы помочь мне прояснить мою мысль. Спасибо!
а как же С? такой же?
в С++, где остаются статические или нестатические переменные? Я имею в виду в памяти.
и Когда инициализируются статические или нестатические переменные?
Мне нужен кто-то, чтобы помочь мне прояснить мою мысль. Спасибо!
а как же С? такой же?
Они могут располагаться там, где компилятор (или компоновщик, или загрузчик) хочет поместить их в память, стандарты C и C++ не требуют такого уровня детализации. Они определяют только поведение.
Как правило, статические члены инициализируются один раз, либо при запуске программы (в том числе во время компиляции, так что они просто загружаются в уже инициализированном состоянии), либо непосредственно перед первым использованием.
Место проживания нестатических членов зависит от того, как создается экземпляр объекта.
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.
Я не уверен насчет статических членов.
Статики находятся там же, где и глобальные переменные, которые, как правило, определяются компилятором, создаются при загрузке программы и сохраняются до завершения программы.
Нестатические объекты помещаются туда, куда вы их помещаете (в стек или в кучу).