ReadProcessMemory()的定义:
ReadProcessMemory(HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer,
nSize, SIZE_T * lpNumberOfBytesRead);
这样做有什么问题吗?
ReadProcessMemory(this->processHandle, 0, &ret, sizeof(int), new DWORD);
答案 0 :(得分:1)
是的,有问题。
您将无法确定读取了多少字节,因为您无法访问该值,因为临时指针已丢失。
你永远无法释放DWORD
对象,所以你有内存泄漏。
答案 1 :(得分:0)
在这种情况下,您有内存泄漏。您将无法恢复新DWORD
的地址以将其删除。此函数的正确用法是提供现有DWORD
的地址,然后阅读它。
DWORD bytesRead;
ReadProcessMemory(this->processHandle, 0, &ret, sizeof(int), &bytesRead);
// bytesRead can be read to see how many bytes were read
函数接受指向新变量的指针然后在内部删除它将是奇怪的,但并非不可能。使用库或API时,请务必仔细阅读文档。