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 @ 2022-10-27 10:02  zjh6  阅读(16)  评论(0)    收藏  举报  来源