![]() |
1
2
日志记录比较困难,至少日志文件需要已经打开。
可能最好是
|
![]() |
2
3
“正在释放预先分配的堆空间…”。这正是我在读你的问题时所想的。但我想你可以试试。每个进程都有自己的虚拟内存空间。由于另一个进程占用大量内存,如果整个计算机都在工作,这一点可能仍然有效。 |
![]() |
3
1
在Windows(和其他现代操作系统)下,每个进程都有自己的地址空间(又称内存),与其他运行的进程分开。所有这些都与机器中的文字RAM是分开的。操作系统已经虚拟化了远离物理RAM的进程地址空间。 这就是Windows如何将进程使用的内存推送到硬盘上的页面文件中,而这些进程不知道发生了什么。 这也是单个进程如何分配比机器有物理RAM且仍在运行的内存更多的内存。例如,在内存为512MB的机器上运行的程序仍然可以分配1GB的内存。Windows不能同时将所有的内容都保存在RAM中,有些内容会保存在页面文件中。但程序不知道。 因此,如果一个进程分配内存,它不会导致另一个进程的内存减少。每个过程都是独立的。 每个过程只需要担心自己。所以释放预先分配的内存块的想法实际上是非常可行的。 |
![]() |
4
0
不能使用CRT或MessageBox函数来处理OOM,因为它们可能需要内存,如您所述。唯一真正安全的方法是在启动时分配一块内存,您可以将信息写入并打开文件或管道的句柄,然后在退出时向其写入文件。 |