C UUID创建内存泄漏
有人能解释为什么我在下面的代码中出现+1.55KB的内存泄漏,以及我应该如何避免它C UUID创建内存泄漏,c,windows,memory-leaks,uuid,C,Windows,Memory Leaks,Uuid,有人能解释为什么我在下面的代码中出现+1.55KB的内存泄漏,以及我应该如何避免它 void TestGuid() { UUID id; ZeroMemory(&id, sizeof(UUID)); UuidCreate(&id); } int _tmain(int argc, _TCHAR* argv[]) { TestGuid(); // Memory Snapshot 1 here return 0; // Memory Snaps
void TestGuid() {
UUID id;
ZeroMemory(&id, sizeof(UUID));
UuidCreate(&id);
}
int _tmain(int argc, _TCHAR* argv[]) {
TestGuid(); // Memory Snapshot 1 here
return 0; // Memory Snapshot 2 here
}
UuidCreate的第一个调用进行一些分配。第一个快照显示分配的内容,似乎与随机数生成器的初始化有关:
但如果再次调用UuidCreate,则不会进行新的分配。第二个屏幕截图显示未发现泄漏。因此,从形式上讲,存在漏洞,但您无法修复它,这并不是什么大问题——分配的内存很少
为什么决定内存泄漏?根据视觉研究添加了内存快照的图片。这并不能证明什么。windows DLL internal可以在进程中分配额外内存。这是一个非常复杂的过程。但是你的具体代码中没有内存泄漏我必须说这让我有点困惑。这是否意味着我们不能真正信任VStudio内存监视器?或者我应该改变追踪泄露的方式。。。无论如何,谢谢不,windows进程虚拟空间的结构非常复杂。我们不能仅仅基于这两点来谈论内存泄漏。如果说在您的进程的内存使用永久性增长的时间段内,这是关于泄漏的。但你的具体例子说明不了什么。实际上,我很担心,因为我正计划循环UUID生成,所以担心每次都会丢失一些kB。你的测试我应该亲自进行,但我的例子实际上是一个更大的测试的摘录,这让我远离这个想法,证明这没什么大不了的。