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是学习高性能代码的最佳语言之一,因为你根本不必担心开箱即用的内存管理.我对用栈分配的后端没有意见,因为可证明它们没有逃逸,为什么不能仅依靠它呢?
浙公网安备 33010602011771号