下面是我的源代码,我正在尝试将传感器信息存储在链表上。 传感器信息按JSON类型接收。而且,我确认它解析得很好。
然而,当我试图存储收到的值时,则“分段错误 “发生了错误。 我认为这是因为使用了struct的双指针。 我该如何解决这个问题?
//sensor
if (!strcmp(key, "sensor") && (num_sen > 0))
{
#if DEBUG
fprintf(stderr, "\n********************SENSORINFO********************\n");
#endif
SENSOR_CONFIG **p_sen = NULL;
p_sen = mcfg->sensor_cfg;
SENSOR_CONFIG ** firstnode = NULL;//첫번째 노드
SENSOR_CONFIG ** lastnode = NULL;//마지막 노드
if (num_sen > 0)
{
for (int i = 1; i < num_sen; i++)
{
json_t * arr_data, *obj2, *arr2;
const char * key2;
int k;
json_array_foreach(obj, i, arr) {
//각 센서 array 시작
json_object_foreach(arr, key2, obj2) {
p_sen = (SENSOR_CONFIG **)malloc(sizeof(SENSOR_CONFIG));//먼저 생성하고 보자
arr_data = json_object_get(arr, key2);
if (_eq("id"))
{
fprintf(stderr, "can read id\n");
(*p_sen)->id = (int)json_integer_value(arr_data);
fprintf(stderr, "id:");
fprintf(stderr, "%d\n", (*p_sen)->id);
}
...
}
(*p_sen)->next = NULL;
if (firstnode == NULL) {//처음으로 실행되면
firstnode = p_sen;
lastnode = p_sen;
}
else {//처음이 아니면 뒤에 계속 추가. lastnode가 계속 바뀐다
(*lastnode)->next = p_sen;//원래 lastnode가 가리키는 곳이 새로 생성된 노드의 값을 가리키게 한 후,
lastnode = p_sen;//방금 생성한 노드가 맨 끝자리에 추가했으므로 방금 생성한 노드가 lastnode가 된다.
}
}//sensor array
}
}
else
{
mcfg->sensor_cfg = NULL;
}
}