新 X 在作为参数传递给函数时是否会导致 mem 泄漏
Does new X cause a mem leak when passed as an argument to a function?
Definition of ReadProcessMemory():
ReadProcessMemory(HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer,
nSize, SIZE_T * lpNumberOfBytesRead);
这样做有什么问题吗?
ReadProcessMemory(this->processHandle, 0, &ret, sizeof(int), new DWORD);
是的,有问题。
您将无法确定读取了多少字节,因为您无权访问该值,因为临时指针丢失了。
而且您将永远无法释放DWORD
对象,因此存在内存泄漏。
在这种情况下,您有内存泄漏。您将无法恢复新DWORD
的地址以将其删除。此函数的正确用法是提供现有DWORD
的地址,然后读取它。
DWORD bytesRead;
ReadProcessMemory(this->processHandle, 0, &ret, sizeof(int), &bytesRead);
// bytesRead can be read to see how many bytes were read
一个函数接受指向新变量的指针,然后在内部删除它,这很奇怪,但并非不可能。确保在使用库或 API 时仔细阅读文档。
相关文章:
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 我是否生成线程并导致内存泄漏?
- 我的堆栈弹出式磁带的实现是否泄漏内存?
- 此函数是否会在C++中创建内存泄漏?
- 以下代码是否存在内存泄漏?
- 构造函数对象赋值是否泄漏内存
- 如果操作系统未清除内存泄漏,则在程序完成后内存泄漏是否仍然存在?
- 我的C++代码中是否有一些内存泄漏
- gpc服务器不会释放内存,是否存在内存泄漏?
- QabtractItemmodel :: Removerows是否会导致内存泄漏
- 这些场景中的任何一个是否会造成内存泄漏
- 以下代码中的嵌入"new"是否会导致内存泄漏?
- 新 X 在作为参数传递给函数时是否会导致 mem 泄漏
- 此函数是否泄漏内存
- 我的链表实现是否泄漏内存
- 此程序是否泄漏内存
- log4cxx::Level::getError()是否泄漏内存
- c++,是否泄漏?什么是可以做的
- 当使用new创建其构造函数抛出的对象时,是否泄漏构造对象
- 如何判断我是否泄漏了 COM 对象?