所以我有一個非常奇怪的錯誤,我無法理解。我正在運行循環和檢查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