d何时栈上分配

原文

问题是何时分配[1,2,3]上,何时分配到GC堆上?
要点:
1.在C中,它是在上分配的.D分配其到,这里有点令人惊讶,尽管D在C之前就有这样的字面
2.在上分配表明它在@nogc代码中不可用.
3.编写表达式时,放在栈上的唯一方法是给它赋值不方便又低效的域变量.
4.它违背了简单代码应比复杂代码更有效的想法
因此,我提出以下建议:
[1,2,3]始终在上分配
[1,2,3].dup始终在上分配
且因此行为不依赖于推导.

不要!可显式请求在栈上分配:

int[3] = [1, 2, 3];

问题是它的重复性.以前已提出过,只需要:

int[$] = [1, 2, 3];

如果要修复,就修复它!它也后向兼容.
编译器可说所有不立即赋值给静态数组的数组字面在堆上分配,这样就一致了.

堆上分配数组字面是很差的.请不要改变该点!D是学习高性能代码的最佳语言之一,因为你根本不必担心开箱即用内存管理.我对用栈分配的后端没有意见,因为可证明它们没有逃逸,为什么不能仅依靠它呢?

posted @   zjh6  阅读(12)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示