Open7

C# の Span<T>とMemory<T> を勉強する

ongaeshiongaeshi

stackalloc したものを Span にして戻り値で返そうとするとちゃんとコンパイルエラーにしてくれる。

受け取ったものが配列ならもちろん OK。

ongaeshiongaeshi

span や span を持つ ref 構造体は Task には渡せない。

ongaeshiongaeshi

ChatGPT と Google 検索しながら理解できた。Span 内の配列の途中ポインタはマネージドポインタ扱いになってちゃんと保護されるのだと理解。

https://zenn.dev/ongaeshi/articles/0d271a6e42cf41

おそらく stackalloc が渡されたときはマネージドポインタにならないはずだけと、どちらもSpan<int> なのにどうやって判定しているのだろう?