Stack создание экземпляров объекта в D

Я изучаю язык D, и меня смущает ошибка, которую я получаю.

Примите во внимание следующее:

module helloworld;

import std.stdio;
import std.perf;

ptrdiff_t main( string[] args )
{
     auto t = new PerformanceCounter;    //From managed heap
     //PerformanceCounter t;             //On the stack

     t.start();
     writeln( "Hello, ", size_t.sizeof * 8, "-bit world!" );
     t.stop();

     writeln( "Elapsed time: ", t.microseconds, " \xb5s." );

     return 0;
} //main()

Результат вполне респектабельный:

Hello, 32-bit world!
Elapsed time: 218 µs.

Теперь посмотрим, что происходит когда я пытаюсь инициализировать PerformanceCounter в стеке вместо использования управляемой кучи:

 //auto t = new PerformanceCounter;  //From managed heap
 PerformanceCounter t;               //On the stack

Выходы:

--- killed by signal 10

Я в тупике. Есть мысли о том, почему это ломается? (DMD 2.049 в Mac OS X 10.6.4). Заранее благодарим за помощь n00b.

6
задан anoncow 23 October 2010 в 22:18
поделиться