ufcpp / UfcppSample

http://ufcpp.net/ 向けのサンプル
Apache License 2.0
136 stars 39 forks source link

stackallocの配列長が定数でなければならないという記述 #327

Closed iwkjosec closed 3 years ago

iwkjosec commented 3 years ago

[相互運用] unsafe > スタック上への配列の確保(stackalloc)

ただし、stackalloc を用いた場合、配列長は定数でなければなりません。

変数でも大丈夫っぽいんですけど、いつからか仕様が変わったのでしょうか。 それとも実行時になにか都合が悪いことがあったりするのでしょうか。

ufcpp commented 3 years ago

間違いですね。直します。 相当初期に書いたページで、Cの int x[N] と混同して書いてたとかじゃないかと思います。

大きすぎる値を取るとスタックオーバーフローを起こしやすくなるとか、ループの内側でstackallocするとメソッドを抜けるまでスタックが伸び続けるとかの問題はあります。

ufcpp commented 3 years ago

とりあえず単に文面削除で対処。

Span<T> buffer = len <= 512 ? stackalloc T[len] : new T[len] 系の可変長の例を書き足した方がいい気もしつつとりあえず。