0

cJSON ライブラリの使用中に問題が発生しました。特定の時間 (40 分から 1 時間) 後にコードが壊れるメモリ リークがあると想定しています。

以下のコードをコピーしました:

void my_work_handler_5(struct k_work *work)
{

     char *ptr1[6];
     int y=0;
     static int counterdo = 0;
     char *desc6 = "RSRP";
     char *id6 = "dBm";
     char *type6 = "RSRP";
     char rsrp_str[100];
     snprintf(rsrp_str, sizeof(rsrp_str), "%d", rsrp_current);

     sensor5 = cJSON_CreateObject();

    cJSON_AddItemToObject(sensor5, "description", cJSON_CreateString(desc6));
    cJSON_AddItemToObject(sensor5, "Time", cJSON_CreateString(time_string));
    cJSON_AddItemToObject(sensor5, "value", cJSON_CreateNumber(rsrp_current));
    cJSON_AddItemToObject(sensor5, "unit", cJSON_CreateString(id6));
    cJSON_AddItemToObject(sensor5, "type", cJSON_CreateString(type6));

       /* print everything */
        ptr1[counterdo] = cJSON_Print(sensor5);

        printk("Counterdo value is : %d\n", counterdo);
         
        cJSON_Delete(sensor5);
        
         counterdo = counterdo + 1;
        
        if (counterdo==6){
        for(y=0;y<=counterdo;y++){
         free(ptr1[y]);
         }
         counterdo = 0;
         }

        return;
}

メモリの解放に関する他のスレッドを読み、同じことを試みました。これがcJSONオブジェクトに割り当てられたスペースを解放するための正しいアプローチであるかどうか、誰かに教えてもらえますか?

よろしく、アディール。

4

1 に答える 1