Говорят, что локальная переменная будет выделена и освобождена автоматически, когда функция закончится на C/C++.Распределение памяти в стеке
Согласно моему пониманию, когда оно было освобождено, значение, удерживаемое локальной переменной, также будет уничтожено !!! Пожалуйста, поправьте меня, если я ошибаюсь
Рассмотрим следующий код:
void doSomething(int** num)
{
int a = 10;
*num = &a;
} // end of function and a will be destroyed
void main()
{
int* number;
doSomething(&number);
cout << *number << endl; // print 10 ???
}
Может кто-нибудь прояснить для меня?
Тьфу, пожалуйста, не do 'void main()'. – birryree
Вы попробовали запустить его? – Josh
Он печатает '10' только потому, что значение еще не было перезаписано чем-то еще. Только из-за удачи, похоже, он работает. – Gabe