MSVC和linux中的malloc函数在cJSON中是不同的

MSVC和linux中的malloc函数在cJSON中是不同的,c,malloc,cjson,C,Malloc,Cjson,当我研究cJSON源代码时,我不明白为什么他们使用不同的malloc函数,而不是使用包装器 typedef结构内部钩子 { 作废*(CJSON\U CDECL*分配)(大小); 作废(CJSON_CDECL*解除分配)(作废*指针); void*(CJSON\u CDECL*重新分配)(void*指针,大小\u t大小); }内钩; #如果已定义(\u MSC\u VER) /*解决MSVC错误C2322的方法:“…”dllimport“…”的地址不是静态的*/ 静态空隙*CJSON\U CDE

当我研究cJSON源代码时,我不明白为什么他们使用不同的
malloc
函数,而不是使用包装器

typedef结构内部钩子
{
作废*(CJSON\U CDECL*分配)(大小);
作废(CJSON_CDECL*解除分配)(作废*指针);
void*(CJSON\u CDECL*重新分配)(void*指针,大小\u t大小);
}内钩;
#如果已定义(\u MSC\u VER)
/*解决MSVC错误C2322的方法:“…”dllimport“…”的地址不是静态的*/
静态空隙*CJSON\U CDECL内部\U malloc(尺寸)
{
返回malloc(大小);
}
静态无效CJSON\U CDECL内部无(无效*指针)
{
自由(指针);
}
静态void*CJSON\u CDECL internal\u realloc(void*指针,大小\u t size)
{
返回realloc(指针、大小);
}
#否则
#定义内部\u malloc malloc
#定义内部自由
#定义内部\u realloc realloc
#恩迪夫

您是否在问为什么库使用
内部钩子
而不是直接调用
malloc
free
,或者为什么在使用MSVC编译时需要不同的代码?是的,
malloc
函数不同?