我有一个带有 cJSON 指针的结构,如下所示:
struct {
cJSON *myJSON1;
cJSON *myJSON2;
...
} myStruct;
在我的代码中的某处,我创建了 cJSON 项,如 myStruct.myJSON1 = cJSON_CreateObject()
在代码的最后,我想在分配的那些指针上调用 cJSON_Delete()。我认为这是经典的 C 案例,无法确定指针是否以某种方式分配。当然,我可以保留一个标志来跟踪,但我想要一个简单的方法。我读...
cJSON 结构如下:
/* The cJSON structure: */
typedef struct cJSON
{
struct cJSON *next;
struct cJSON *prev;
struct cJSON *child;
int type;
char *valuestring;
/* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */
int valueint;
double valuedouble;
char *string;
} cJSON;
函数cJSON_Invalid()可用。文档指出“(检查 cJSON_IsInvalid):表示不包含任何值的无效项目。如果您将项目设置为全零字节,您将自动拥有此类型。” 我必须将结构设置为 0 还是只输入?
换句话说,我的问题是:在不创建额外变量的情况下检查 cJSON 指针是否被分配的最简单方法是什么?也许将“类型”设置为零?我可以尝试这样的选择,但我想要一个适用于所有情况的明确答案。