【发布时间】:2011-05-21 12:33:50
【问题描述】:
Program received signal SIGSEGV, Segmentation fault.
0x08048637 in insertWordDictR (string=0xbf87e7b6 "a", child=0x20f88,
isTerminal=0x20f8c) at dictionary.c:54
54 *isTerminal = False;
在我的头文件中
typedef enum {False, True} bool;
以下是相关代码行:
dictLink insertWordDictR(char *string, dictLink child, bool* isTerminal){
dictLink newWord;
if(isTerminal != NULL){
if(string[0] == '\0'){
*isTerminal = True;
return NULL;
}else{
*isTerminal = False;
}
}
if (child == NULL){
newWord = malloc(sizeof (struct dictEdge));
newWord->thisChar = string[0];
newWord->child = insertWordDictR(string + 1, newWord, &(newWord->isTerminal));
newWord->sibling = NULL;
}else{
newWord = insertIntoSiblingList(string, child);
}
return newWord;
}
这一行是我如何调用这个函数的一个例子
newWord->child = insertWordDictR(string + 1, newWord, &(newWord->isTerminal));
All files can be found here,还有一个名为“testing”的输入文件。
【问题讨论】:
-
发布您调用 insertWordDictR 函数的代码,包括您传递给该函数的所有变量的定义
-
我建议启用额外的编译器警告...例如如果您使用 gcc,“-Wall”命令行选项可能会警告未初始化使用“结果”。
标签: c debugging enums segmentation-fault