[英]Need help in understanding what is going on in C program
所以我有一個非常奇怪的錯誤,我無法理解。 我正在運行循環並檢查NULL值然后我想終止循環。 但是,我有以下值后,我得到一些EXC_BAD_ACCESS問題(如截圖所示)
這是另一段返回char字符串的代碼
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值...
您的TKGetNextToken測試從不存在的NULL。 最后添加一個NULL條目:
words = (char **)malloc(sizeof(char*) * (numberOfWords +1));
for (int i = 0; i < numberOfWords; i++)
words[i] = (char *)malloc(strlen(ts)+1);
words[i] = NULL;
好。 由於Joachim和JosEdu,我修復了我的代碼。 words =(char **)malloc(sizeof(char *)* numberOfWords); 需要numberOfWords + 1因為當我走出界限並檢查空值時,它只是有一些沒有分配的內存塊而且我遇到了麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.