我有一个应该向我返回文字的功能。 这是声明:
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
中?
答案 0 :(得分:0)
LPVOID
类型与void*
完全相同,这意味着指向没有特定类型的对象的指针。同样,就目前而言,lpBuffer并未指向任何对象,因为它尚未初始化。初始化此指针的主要方法有两种:在堆上还是在栈上。要初始化堆栈,请将其初始化为char
数组:
char lpb[1000]; // Or however much space
LPVOID lpBuffer = (LPVOID) lpb;
要在堆上初始化,请使用malloc
(内存分配)函数。这会在某处分配一些空间并返回指向它的指针。只要记得在完成将空间退还给OS时调用它上的free
:
#include <stdlib.h> // malloc, free
// ...
LPVOID lpBuffer = malloc(1000); // pick your space
// ...
free(lpBuffer); // release the space
关于转换为std::string
的信息,请参见page。