1

重複の可能性:
二重ポインターを使用して 2D 配列を割り当てるにはどうすればよいですか?

VB 2012 Express を使用して迷路プログラムを作成しました。

ROW*COLUMNに設定した場合でも、非常にうまく機能します499*499(迷路は配列です: unsigned char maze[ROW][COLUMN])。

しかし、ある時、 の超巨大な迷路を作ろうとしたところ999*999、コンパイラが「スタック オーバーフロー」エラーを出しました。

私はそれが何を意味するのか知っていますが、余分なメモリを割り当てたり、プログラムを実行するためにディスク容量を使用したりする方法はありますか?

4

2 に答える 2

2

次のように、配列を動的に割り当てる (例: maze = new char[ROW*COLUMN]) か、グローバルに割り当てる (関数スコープ外)ことができます。

#define ROW 999
#define COLUMN 999

unsigned char maze[ROW][COLUMN];

int main(void)
{

}
于 2012-12-16T10:10:16.433 に答える
2

スタックに割り当てmazeており、スタック サイズは通常 1 ~ 8 メガバイトに制限されています。この制限を克服するmazeには、ヒープに割り当てます。

これを行う方法の提案については、二重ポインターを使用して 2D 配列を割り当てるにはどうすればよいですか? を参照してください。およびヒープは2D配列を割り当てます(ポインターの配列ではありません)

于 2012-12-16T09:15:40.793 に答える