C#
本当に大きくstruct
、再帰なし、純粋なC#、安全でないコードではありません。
public struct Wyern
{
double a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;
}
public struct Godzilla
{
Wyern a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;
}
public struct Cyclops
{
Godzilla a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;
}
public struct Titan
{
Cyclops a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;
}
class Program
{
static void Main(string[] args)
{
// An unhandled exception of type 'System.StackOverflowException' occurred in ConsoleApplication1.exe
var A=new Titan();
// 26×26×26×26×8 = 3655808 bytes
Console.WriteLine("Size={0}", Marshal.SizeOf(A));
}
}
キッカーとして、デバッグウィンドウをクラッシュさせて {Cannot evaluate expression because the current thread is in a stack overflow state.}
そして、汎用バージョン(提案NPSF3000に感謝)
public struct Wyern<T>
where T: struct
{
T a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;
}
class Program
{
static void Main(string[] args)
{
// An unhandled exception of type 'System.StackOverflowException' occurred in ConsoleApplication1.exe
var A=new Wyern<Wyern<Wyern<Wyern<int>>>>();
}
}