C の関数から 2D 配列を返す
C で 2D 配列を操作する場合、提供されているコードで示されているアプローチは、推奨。代わりに、次の関数の実装を検討してください。
int** create2DArray(unsigned height, unsigned width) { int** array2D = 0; array2D = new int*[height]; for (int h = 0; h < height; h++) { array2D[h] = new int[width]; for (int w = 0; w < width; w++) { // Initialize array elements as needed } } return array2D; }
この関数は、目的の 2D 配列の高さと幅を符号なし整数として受け取り、それに動的にメモリを割り当てます。外側の配列が最初に割り当てられ、次に内側の配列がループ内で割り当てられます。
メモリ リークを防ぐために、使用後にメモリの割り当てを解除することを忘れないでください。これを行うには、要素をループし、内部配列と外部配列の両方を削除します。
使用例:
int height = 15; int width = 10; int** my2DArray = create2DArray(height, width); // Use the array as needed // ... for (int h = 0; h < height; h++) { delete [] my2DArray[h]; } delete [] my2DArray; my2DArray = 0; // Set pointer to null to prevent dangling pointer
以上がC 関数から 2D 配列を安全に返して管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。