使用 cJson ESP32 的内存泄漏

问题描述

请有人帮我找出为什么使用 cJson 出现内存泄漏我找不到问题。每当我进行身份验证时,实时内存都会减少。 json 仅在那时创建,我已经更改了控制逻辑,但无论如何它总是以泄漏内存结束

esp_err_t loginWS(httpd_req_t *request) {
    JwtService jwtService;
    AutenticationModel autenticationModel;
    AutenticationService autenticationService;

    autenticationModel = autenticationService.loadRegister();

    cJSON *jsonWs;
    cJSON *params;

    std::string token = "";
    std::string msg = "";
    std::string body = "";
    std::string login = "";
    std::string password = "";
    bool error;

    body = _getBody(request); //json received

    jsonWs = cJSON_Parse(body.c_str());

    login = cJSON_GetobjectItem(jsonWs,"_login")->valuestring;
    password = cJSON_GetobjectItem(jsonWs,"_password")->valuestring;

    if (login == autenticacaoModel.getLogin() && senha == autenticacaoModel.getpassword()) {
        token = jwtService.criarJwt();
        msg = "";
        error = false;
    } else {
        token = "";
        msg = "Login or password invalid";
        error = true;
    }

    cJSON_AddItemToObject(jsonWs = cJSON_CreateObject(),"token",params = cJSON_CreateObject());
    cJSON_AddItemToObject(params,cJSON_CreateString(token.c_str()));

    cJSON_AddItemToObject(jsonWs,"message","error",cJSON_CreateBool(erro));
    cJSON_AddItemToObject(params,"msg",cJSON_CreateString(mensagem.c_str()));

    const char *texto = cJSON_Print(jsonWs);
    cJSON_Delete(jsonWs);

    httpd_resp_set_hdr(request,"Content-Type","application/json");
    httpd_resp_sendstr(request,texto);

    free((void *)texto);

    return ESP_OK;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)