Vì vậy, tôi có lỗi rất lạ mà tôi không thể hiểu được. Tôi đang chạy vòng lặp và kiểm tra giá trị NULL sau đó tôi giả sử để chấm dứt vòng lặp. Nhưng, tôi nhận được một số vấn đề EXC_BAD_ACCESS sau khi tôi có các giá trị sau (như bạn có thể nhìn thấy trên ảnh chụp màn hình)Cần trợ giúp để hiểu những gì đang xảy ra trong chương trình C
Đây là thêm đoạn mã mà trả về char chuỗi
char *TKGetNextToken(TokenizerT *tk) {
if((*tk).currentToken)
return *(*tk).currentToken++;
else
return NULL;
}
hạn và cơ cấu thực tế
struct TokenizerT_ {
char **currentToken;
char **tokens;
}tokenizer;
Và đó là những gì tôi có cho con trỏ của tôi:
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;
Tôi không biết tại sao lỗi này có thể xảy ra và tại sao. Bởi vì chúng tôi có thể có một trong hai con trỏ trỏ đến một nơi nào đó hoặc giá trị NULL ...
Bạn cũng nên kiểm tra '* (* tk) .currentToken' trước khi bạn tăng nó. – Sheljohn
Và bạn sẽ không thoát khỏi giới hạn của 'currentToken'? Làm thế nào để bạn tạo ra tất cả những con trỏ? –
"_Tôi không biết tại sao lỗi này có thể xảy ra_" - Điển hình khi bạn có con trỏ trỏ đến không có bộ nhớ. – JosEduSol