После того, как someFunc()
вернется и будет вызвана другая функция, пробел, использованный для stackInt
, будет использован для некоторой другой переменной в новой функции. Следовательно, функция someOtherFunc()
не может безопасно предполагать, что, если она сохранит копию указателя, она будет передана, этот указатель останется действительным. Если он хранит копию значения, на которое было указано, это нормально.
Итак, хотя можно передавать переменные стека по адресу (например, someOtherFunc()
может изменить значение stackInt
и, если в someFunc()
есть код, который получил к нему доступ после вызова, значение может быть не равно 4), небезопасно хранить указатель и ожидать, что он будет указывать на любое действительное значение после возврата someFunc()
.