一个二级指针+一个缓冲区大小的函数原型要怎么样实现

C语言 码拜 9年前 (2016-04-16) 1314次浏览
领导给出了以下原型,要求实现功能,现在本人功能实现了,但是不知道怎么套进这个接口里面!

//2.获取系统信息
__declspec(dllexport)  __cdecl
unsigned int 		//返回缓冲区写入数据的长度(输出字符指针为空时,返回需要的长度)
    GetSysInfo(
    __out char** SysInfo,		//系统信息字符串(XML格式)
    __in unsigned int Length	//系统信息缓冲区长度
)

这想知道这个接口到底是在内部分配内存还是在外部分配内存?假如是外部分配内存,那传进来的 Length 又有什么用?

解决方案

20

外部分配内存。
传进来的Length限制你填写信息的总字节长度。

20

unsigned int GetSysInfo1(
    char *SysInfo,
    unsigned int Length
);
// 常见方式直接传指针和长度
SystemInfomation sysInfo;
GetSysInfo1(&sysInfo, sizeof(sysInfo));
unsigned int GetSysInfo2(
    char **SysInfo
);
// 传二级指针方式,通常都不需要长度
SystemInfomation *lpSysInfo;
if (GetSysInfo2(&lpSysInfo) > 0)
{
    printf("%?\n", lpSysInfo->xxx);
    // 假如成功,则需要释放。API 编写者提供一个对应的释放函数。
    // 如 Windows 中经常有 LocalFree、ILFree/CoTaskMemFree 等
    xxxFree(lpSysInfo);
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明一个二级指针+一个缓冲区大小的函数原型要怎么样实现
喜欢 (0)
[1034331897@qq.com]
分享 (0)