D的文档说当你使用scope
作为局部变量时,它们将被分配在堆栈上(即使你正在分配class
实例)。但是auto
关键字呢?它是否保证实例将在堆栈上分配?
void foo() { auto instance = new MyClass();}
void foo() { scope instance = new MyClass();}
那么我可以建议这两个陈述是相等的(就分配而言)吗?
答案 0 :(得分:1)
不,auto
仅推断出类型
如果你想在堆栈上分配它,那么使用auto
是没有意义的。那就是scope
是什么。
他们非常出色(阅读:不是那么多)决定从语言中删除scope
,delete
等,所以无论如何它都可能在堆上分配。最好的办法是在其中一个模块中使用名为scoped
的函数,在堆栈上进行分配。
答案 1 :(得分:0)
回答第二个问题:在D1中,这两个陈述并不相同。第一个在堆上分配,第二个(假设)在堆栈上分配。