我使用 sbrk(0) 来监视应用程序中动态内存的使用情况。在程序开始时我做
dynamic_base = sbrk(0);
以及通过程序使用的各个点
sbrk(0) - dynamic_base
作为当前内存使用量高水位的衡量标准。有 Windows 的等价物吗?
或者,是否有更好的方法从 Windows 和 Unix 的进程中确定动态内存使用情况。
最佳答案
IInspectable 建议的性能计数器将起作用,但它们有些复杂。
如果您只想知道应用程序使用的内存量,请调用 GlobalMemoryStatusEx
并检查结果的 ullTotalVirtual
和 ullAvailVirtual
成员。
与 sbrk
方法不同,它不区分静态加载的代码和数据部分、动态加载的模块、线程堆栈和动态分配(堆)。但是这个数字的差异将是最大堆大小的差异。
关于c - 在 Windows 上是否有等效的 sbrk(0),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27802882/