carcon999のブログ

12年間Y!ブログの記載を移行しました。電子工作関連の記事が多いです。

配列の書き方が違う!

■プログラム
{
String str[2];
}
というような書き方をすると、コンパイルエラーが発生します。
error C2728: 'System::String' : ネイティブ配列はこのマネージ型を含むことはできません

□解決策
{
array<String>strAry = gcnew array<String^>(2);
}
CLIのarrayを利用して記述するみたいです。
gcnewは、C++のnewの代わりになるようなものです。'gc'とは、garbage collection (ガーベージコレクション)の略みたいです。C++では、new - deleteの関係がありましたが、これ(gcnew)で取得した領域は、不要になったと判断されたらかってに開放されるのでdeleteがありません。つまり、メモリリークが発生しないということです。まあ、JAVAなんかで有名なので説明するまでも無いですね。

★[](角括弧)による配列記述は、array<>による記述にしろ。