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') 在这一行)。为什么?

有人请帮助我。

4

4 回答 4

3

因为s+column+2超出了数组的界限,所以需要为分配更多的内存array或者确保不要超出分配的内存。

于 2012-11-23T16:44:22.540 回答
2

使用时var[],您取消引用*var指针。在这里,由于 0x53 接近于零,它似乎array是 NULL。访问时array[s+column+2],您(s+column+2) * sizeof(*array)加到零,这肯定会导致0x53.

You can verify this printing array value with printf("pointer value : %p\n", array);.

于 2012-11-23T16:45:26.607 回答
1

越界总是只意味着一件事,超出了允许的边界。因此,当您获得一个地址超出范围时,这意味着该地址在边界之外。这个边界可以通过程序、数组来定义。

于 2012-11-23T16:48:44.157 回答
0

这意味着 的值s+column+2大于数组的长度。

于 2012-11-23T16:44:49.423 回答