//
// Copyright (c) 2002
// Ronald Kevin Burton
//
// Z poniższym kodem nie jest związana żadna gwarancja poprawności działania.
// Program został dołączony do książki ".NET CLR. Księga eksperta" w celu
// ilustracji koncepcji i zasad przedstawionych w tej książce. Program może być 
// używany na własne ryzyko.
//
// Przyznaje się prawo do użycia lub kopiowania tego oprogramowania do dowolnego celu
// bez konieczności ponoszenia żadnych opłat pod warunkiem, że powyższe uwagi zostaną 
// zachowane we wszystkich kopiach. Przyznaje się także prawo do modyfikacji kodu
// i dystrybucji zmodyfikowanego kodu pod warunkiem zachowania powyższych uwag
// oraz dołączenia informacji mówiącej o modyfikacji kodu.
//
// 
using System;

// csc /unsafe stackalloc.cs
namespace Testing
{
	class StackallocMain
	{
		static unsafe void FillBuffer(out int[] buffer)
		{
			buffer = new int [10];
			int count = buffer.Length;
			int *p = stackalloc int[count];
			int *t = p;
			for(int i = 0; i < count; i++)
				*t++ = i;
			t = p;
			for(int i = 0; i < count; i++)
				buffer[i] = *t++;
		}
		static void Main(string[] args)
		{
			int [] buffer;
			FillBuffer(out buffer);
			foreach(int i in buffer)
				Console.WriteLine("{0}", i);
		}
	}
}
