C <地å€0x53 =“â€out =“â€= =“â€bounds =“â€>错误</address>

时间:2012-11-23 16:42:55

标签: c indexoutofboundsexception

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

当我调试程åºæ—¶ï¼Œæˆ‘收到的错误是“地å€0x53越界â€ï¼ˆå¦‚果(迷宫[s +列+ 2] =='0')此行)。为什么呢?

有人请帮帮我。

4 个答案:

答案 0 :(得分:3)

因为s+column+2超出了数组的范围,所以需è¦ä¸ºarray分é…更多内存,或者确ä¿ä¸è¦è¶…出分é…的内存。

答案 1 :(得分:2)

使用var[]时,您å–消引用*var指针。这里,当0x53接近零时,似乎array为NULL。访问array[s+column+2]时,您将(s+column+2) * sizeof(*array)添加到零,这肯定会导致0x53。

您å¯ä»¥ä½¿ç”¨array验è¯æ­¤æ‰“å°printf("pointer value : %p\n", array);值。

答案 2 :(得分:1)

越界总是æ„味ç€åªæœ‰ä¸€ä»¶äº‹ï¼Œè¶…出å…许范围。 因此,当您获得地å€è¶…出界é™æ—¶ï¼Œæ„味ç€åœ°å€è¶…出边界。该边界å¯ä»¥ç”±ç¨‹åºï¼Œæ•°ç»„定义。

答案 3 :(得分:0)

è¿™æ„味ç€s+column+2的值大于数组的长度。