当作为参数传递给函数时,新X是否会导致内存泄漏?

时间:2017-01-16 23:04:08

标签: c++

ReadProcessMemory()的定义

ReadProcessMemory(HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, 
                  nSize, SIZE_T * lpNumberOfBytesRead);

这样做有什么问题吗?

ReadProcessMemory(this->processHandle, 0, &ret, sizeof(int), new DWORD);

2 个答案:

答案 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时,请务必仔细阅读文档。