【发布时间】:2019-04-10 12:13:06
【问题描述】:
我有一个应该返回文本的函数。 这是声明:
typedef bool(WINAPI* GetMenuHelpName)(intptr_t dll, LPVOID lpBuffer, int size);
我想我的文字在LpBuffer:
GetMenuHelpName func2 = (GetMenuHelpName)GetProcAddress(hGetProcIDDLL, "GetMenuHelpName");
LPVOID lpBuffer;
func2(instance, lpBuffer, 2048);
我收到了这个错误:
Error C4700 : uninitialized local variable 'lpBuffer' used
如何初始化lpBuffer 并将结果放入std:string?
【问题讨论】:
-
考虑使用
malloc或者像数组一样初始化它。 -
你必须为缓冲区分配一些内存。你不能只传递一个指向什么都没有的指针并期望得到文本;您必须使内存可用,并且它应该与您告诉它您提供的大小相匹配。想一想 - 你当前的代码说占用这个我没有提供的空间,我告诉你你可以把 2048 字节放入那个不存在的空间。你认为这将如何运作?提示:它的工作原理与将你的空手放在你面前并告诉某人把粪肥铲到我拿着的这个袋子里一样。
-
通常,如果您打算从缓冲区中复制数据,它将是一个本地数组,您将其地址传递给函数,然后复制返回的数据。
标签: c++