从专业人员到超级专业人员的任何问题 - 1。 - 页 29

 
sergeev:

当关闭一个句柄时,内存(已经分配了超过CreateFileMapping中指定的内存)是不是不会再恢复了?
它被释放出来了。但这是在最后。我们需要在运行时节省内存。
 
在什么情况下?"胜利结束 "或 "少数人结束 "或 "申请结束"?
 
sergeev:
在什么情况下?"胜利结束 "或 "少数人结束 "或 "申请结束"?
任意一个都可以选择。不过,这也是结局。
 
啊,好吧,如果是关闭头文件,那么我不认为有任何内存泄漏,这是Windows在删除头文件时释放内存的正常方式。
 

在运行中通过关闭描述符来释放内存,这在某种程度上是错误的。

记忆应该被释放,而不是希望Windos。

 
你分配的所有东西都被删除了。 MSDN的Mapping并没有说在关闭处理程序之前要手动释放内存
 
sergeev:
你分配的所有东西都被删除了。 MSDN的Mapping并没有说在关闭处理程序之前要手动释放内存。
好吧,我不是说在关闭手柄之后。在处理内存时,我们需要动态地调整其大小。但你不必一直这样做。不断地重新分配需要时间。
 

瓦迪姆,我们到底在解析什么?

我发现有两种方法 可以扩大内存。 你认为在这两种情况下都会有内存泄漏的问题吗?

 

如果所有的描述符都关闭,就没有泄漏。泄漏是指程序被卸载但留下资源被占用。

但可能存在内存消耗过大的问题。不久前,我自己也有这样的问题。我连接了用于处理时间序列的错误类。我添加了一个以秒为单位索引刻度的类。开始用这个班级来处理月球棒。它在30秒内吃掉了所有的内存。这是其中一个可能的变体。我们应该监督这类事情,并对其提出警告。

第二种情况是程序需要大量的内存,例如1000Mb,但不是长时间的。如果你不释放它,其他程序将少1000MB,直到你的程序被卸载。

简而言之,你需要跟踪资源消耗情况。

 
好的,我会考虑到这一点。