所以我有一个非常奇怪的错误,我无法理解。我正在运行循环和检查NULL值,然后我想终止循环。但是,我得到一些EXC_BAD_ACCESS的问题后,我有以下值(正如你所看到的截图)需要帮助了解C程序中发生了什么
这是一个返回字符的字符串
char *TKGetNextToken(TokenizerT *tk) {
if((*tk).currentToken)
return *(*tk).currentToken++;
else
return NULL;
}
和实际结构代码再加上一块
struct TokenizerT_ {
char **currentToken;
char **tokens;
}tokenizer;
而这正是我对我的指点:
char **words;
words = (char **)malloc(sizeof(char*) * numberOfWords);
for (int i = 0; i < numberOfWords; i++)
words[i] = (char *)malloc(strlen(ts)+1);
tokenizer.tokens = words;
tokenizer.currentToken = words;
我不知道为什么会出现这个错误,为什么。因为我们可以有指向某处的指针或NULL值...
在增加它之前,您应该检查'*(* tk).currentToken'。 – Sheljohn 2014-09-12 23:49:37
你不会超出'currentToken'范围?你如何创建所有这些指针? – 2014-09-12 23:55:56
“_我不知道为什么会出现这个错误。” - 典型的指针指向没有内存。 – JosEduSol 2014-09-13 00:01:54