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') 在这一行)。为什么?
有人请帮助我。
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') 在这一行)。为什么?
有人请帮助我。
因为s+column+2
超出了数组的界限,所以需要为分配更多的内存array
或者确保不要超出分配的内存。
使用时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);
.
越界总是只意味着一件事,超出了允许的边界。因此,当您获得一个地址超出范围时,这意味着该地址在边界之外。这个边界可以通过程序、数组来定义。
这意味着 的值s+column+2
大于数组的长度。