Авто D1 и разница в объеме в распределении памяти - PullRequest
1 голос
/ 20 ноября 2011
Документы

D говорят, что когда вы используете scope для локальных переменных, они будут размещены в стеке (даже если вы выделяете экземпляр class).Но как насчет ключевого слова * 1003?Гарантирует ли это, что экземпляр будет размещен в стеке?

  1. void foo() { auto instance = new MyClass();}
  2. void foo() { scope instance = new MyClass();}

Так что я могу предположить, что эти два утвержденияравны (с точки зрения распределения)?

Ответы [ 2 ]

1 голос
/ 20 ноября 2011

Нет, auto выводит только тип.
Нет смысла использовать auto, если вы хотите, чтобы он был размещен в стеке;это то, для чего scope было (было).

Они блестяще (читай: не так много) решили удалить из языка scope, delete и т. д., поэтому он, вероятно, выделитв любом случае.Лучше всего использовать функцию под названием scoped в одном из модулей для размещения в стеке.

0 голосов
/ 20 ноября 2011

Чтобы ответить на второй вопрос: в D1 эти два утверждения не равны. Первый размещается в куче, второй (предполагается) размещается в стеке.

...