0
void findWay(int column,int sum,char *array,int s,stack_t sta)
{
 if(array[s+column+2]=='0')
{

プログラムをデバッグすると、「アドレス 0x53 が範囲外です」というエラーが表示されます (if(maze[s+column+2]=='0') at this line)。なんで?

誰か助けてください。

4

4 に答える 4

3

s+column+2配列の境界を超えているため、より多くのメモリを割り当てるarrayか、割り当てられたメモリの外に出ないようにする必要があります。

于 2012-11-23T16:44:22.540 に答える
2

を使用する場合、ポインターvar[]を逆参照します。*varここでは、0x53 が 0 に近いのでarrayNULL のようです。アクセスするとゼロにarray[s+column+2]加算(s+column+2) * sizeof(*array)され、確かに になり0x53ます。

この印刷array値は で確認できますprintf("pointer value : %p\n", array);

于 2012-11-23T16:45:26.607 に答える
1

範囲外 は常に、許可された境界の外という 1 つのことだけを意味します。したがって、範囲外のアドレスを取得すると、アドレスが境界の外にあることを意味します。この境界は、プログラム、配列によって定義できます。

于 2012-11-23T16:48:44.157 に答える
0

s+column+2の値が配列の長さよりも大きいことを意味します。

于 2012-11-23T16:44:49.423 に答える