C#の表記に信じられないほどの癖があることを発見しましstackalloc
た。次のコードを参照してください。
// int *p;
// p = stackalloc int[42]; // won't work!
// Error CS1525: Unexpected symbol `stackalloc' (CS1525)
int *p = stackalloc int[42]; //works
私の意図は、次のような3項式でstackallocを使用することです。
int *p = size > 0xFFFFF ? (int*)Marshal.AllocHGlobal(size).ToPointer() : stackalloc int[size];
まったく予想外のコンパイラの攻撃は私に大きな衝撃を与えました。誰かがこの奇妙な行動に光を当てることができれば本当にありがたいです。私はmonoと.netの両方でテストしましたが、どちらも機能しません。