语言是 C。我有一个 char* 类型数组(char *array[] / char** 数组)作为函数参数,我想将它们全部打印到单独的行中,如下所示:
while (*array) {
printf("%s\n", *array);
printf("after last print");
array++;
}
现在由于某种原因,使用某个输入,它设法打印所有值,但在打印最后一个 *array 后立即崩溃。所以在最后一次 printf 之后,它不再打印“最后一次打印之后”。不幸的是,我在 Windows 7 上支持 netbeans C,没有 gdb。当我尝试将它安装到 netbeans 时出现了一些问题,但那是另一回事了。
首先,这可能是什么原因造成的?其次,如果没有 gdb,我怎么能尝试最好地调试这种行为?如果有人提供了一个可以帮助我调试问题并以这种方式解决问题的答案,那么我也会从中获得积分。与导致崩溃的函数参数相关的一些背景信息:我使用 strtok 从 char* 字符串生成 char** arr,其中空格用作分隔符。
编辑:
更多信息:如果我在同一个函数中尝试 printf 最后一个 *array,它工作正常,程序正常继续。所以这有效:
printf("%s\n", array[4]);
在我的测试用例中,NULL 之前的最后一个索引恰好是 4。但是当同样的事情在循环内完成时,它确实设法打印它,但之后立即崩溃,不再打印第二行。