c - 以下功能如何工作?
问题描述
我偶然发现了一个我无法理解的程序行为:
int* g(int i)
{
i = 1;
return &i;
}
void main() {
int* j = g(5);
printf("%d", *j);
}
我曾经认为函数 g 中收到的参数 i 将在 g 完成后从堆栈中释放。由于某种原因,内存没有被释放,并且 j 在 printf 被调用时保持值 5。这是什么原因?
解决方案
推荐阅读
- reactjs - 如何在 React 中单击子组件时呈现父组件?
- ruby-on-rails - 如何在无需指定节点名称的情况下迭代嵌套的 YML 文件?
- security - 会话 ID 是否应该在 cookie 中加密?
- drupal - 注意:未定义索引:Drupal\Core\Routing\ 中的路径
- javascript - 从孩子访问父母/祖父母/等财产(不是继承)
- python - 追加和删除以检查文本是否在列表中
- dart - 在颤振中将小部件封装在它自己的类中?
- java - 从 GWT 应用程序启动 Angular 应用程序
- javascript - 在 React Chart Js 2 中传递动态数据时的问题
- nativescript - 将特定于平台的组件导入到 nativescript angular 中的模块