问题
问题如题,代码如下。
cJSON *pJsonRoot;
char *p = cJSON_Print(pJsonRoot);
解决方法
cJSON_Print()获取字符串指针后,记得释放内存,不然会报内存泄漏。
free(p);
原因
查看cJSON源代码,cJSON_Print()函数有调用cJSON_malloc()函数,申请内存。
类似以下代码。
if (!(copy = (char*)cJSON_malloc(len)))
return 0;
本文详细解析了使用cJSON库时出现的内存泄漏问题。通过分析cJSON_Print()函数的内部实现,指出该函数会调用cJSON_malloc()来分配内存,而忘记释放这部分内存会导致内存泄漏。文章提供了解决方案,强调在使用完cJSON_Print()获取的字符串指针后,必须使用free()函数来释放内存。
1272





