簡體   English   中英

需要幫助了解C程序中發生了什么

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM