我使用 sbrk(0) 来监视应用程序中动态内存的使用情况。在程序开始时我做

dynamic_base = sbrk(0);

以及通过程序使用的各个点

sbrk(0) - dynamic_base

作为当前内存使用量高水位的衡量标准。有 Windows 的等价物吗?

或者,是否有更好的方法从 Windows 和 Unix 的进程中确定动态内存使用情况。

最佳答案

IInspectable 建议的性能计数器将起作用,但它们有些复杂。

如果您只想知道应用程序使用的内存量,请调用 GlobalMemoryStatusEx 并检查结果的 ullTotalVirtualullAvailVirtual 成员。

sbrk 方法不同,它不区分静态加载的代码和数据部分、动态加载的模块、线程堆栈和动态分配(堆)。但是这个数字的差异将是最大堆大小的差异。

关于c - 在 Windows 上是否有等效的 sbrk(0),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27802882/

10-15 16:08