C プログラムで非常に多くのポインターを渡していますが、それが正しいかどうかを判断するために助けが必要です。
配列構造へのポインターを宣言します (3 つのフィールドを含み、関連するフィールド 1 は整数です)。
StatusItem* statusItem = NULL;
配列のポインターへのポインターを関数に渡します。
parse_object(..., &statusItem, ...)
関数に読み込まれます。
parse_object(..., StatusItem** statusItem, ...)
メモリが割り当てられます:
*statusItem = malloc(cJSON_GetArraySize(*items) * sizeof(StatusItem));
そのコンポーネント (インデックスの 1 つの整数フィールド) は、別の関数に渡されます。
parseInt((*optional)->valuestring, &statusItem[i]->optional)
これが関数で、ここでエラーが発生します。どういうわけか、配列インデックスへの参照を正しく渡していません。
bool parseInt(char *num, int *result)
{
char *end;
int val = strtol(num, &end, 10);
if(errno == ERANGE || *end != '\0') // checks that given value was a number
{
return false;
}
*result = val;
return true;
}
本当に混乱していることはわかっていますが、それを助けることはできないと思います。必要に応じて説明を求めてください。