次のコードで問題が発生しました。これは、より多くのスペースを割り当てることによって char * を char** に追加します。
size_t appendToken(char *tokens[], char *token, size_t size, size_t cap)
{
if(size>=cap)
{
cap+=512;
tokens = realloc(tokens, cap*sizeof(char *));
}
tokens[size] = token;
return cap;
}
このコードが実行され、size = cap の場合、セグメンテーション エラーが発生します (残りの容量がある場合は、期待どおりに動作します)。他のすべてを追跡しましたが、すべて期待どおりに動作します。トークンとトークンが開始される方法は次のとおりです。
size_t tokenCount=0, tokens_cap = 5;
char **tokens = malloc(tokens_cap*sizeof(char *));
size_t size = 0;
size_t capacity = 4;
char *token = malloc(capacity*sizeof(char));
関数の呼び出し方法は次のとおりです。
token_cap = appendToken(tokens, token, tokenCount++, token_cap);
これについて何か助けていただければ幸いです。