variables - 堆栈上的变量是否由垃圾收集器收集?
问题描述
我想了解堆栈变量是如何被释放的。它是作为位于堆上的变量进行垃圾收集的,还是像 C 语言一样在离开变量范围后将在内部释放?
解决方案
一旦分配该变量的函数返回,分配在堆栈上的变量将被删除,因为堆栈指针将恢复到函数调用之前的状态。那里没有 GC 参与。
在 Go 中,如果栈变量是指向堆上对象的指针,那么一旦函数返回,指针将被移除,然后 GC 可以移除它指向的对象,前提是不存在其他引用。
推荐阅读
- c# - 如何手动使用天蓝色表类对象的列名?
- powershell - 没有 Postman 的 API 测试不好
- google-bigquery - BigQuery - 为什么在 Google Analytics 中提取交易数据不需要 UNNEST 运算符?
- java - 如何使用 java / selenium 在 for 循环中添加条件
- gradle - 如何将 Kotlin 源代码的测试报告上传到 Coveralls?
- python - 无法获取下一批的嵌入索引
- php - ParseError:语法错误,意外'=>'(T_DOUBLE_ARROW),期望','或')'行号:89
- ios - 从 DJI 无人机读取参数
- python-3.x - 无法使用 Psycopg2 在 Amazon Redshift 中创建表
- jquery - 如何控制点击事件
- 有条件的?