【发布时间】:2018-07-01 21:55:11
【问题描述】:
我试图了解 C++ 中内存管理的复杂性,以便将它教给我的学生。由于最好的学习方法是通过尝试,我想尝试几个代码 sn-ps,看看它们如何影响内存使用。例如,为了了解唯一指针的工作原理,我想尝试以下操作:
#include <memory>
using namespace std;
int main()
{
{
// print memory - should be X
auto i = make_unique<int>();
// print memory - should be X-4
}
// print memory - should be X
}
我写的cmets是基于我目前的理解,当然可能是错误的;我想检查我是否理解正确。我的问题是:我可以写什么来代替“打印记忆”?
我发现了几个明显相似的问题,例如:How to determine CPU and memory consumption from inside a process? 和 C++: Measuring memory usage from within the program, Windows and Linux。但是,那里的答案非常复杂且依赖于平台。我的需求要简单得多:我不需要程序的绝对内存消耗(即,我不需要 X 是准确的)。我所需要的只是一个相对测量,它将向我展示我的行为如何影响内存消耗。 对于这个需求,有没有更简单的解决方案?
【问题讨论】:
-
你可以自己写分配器/重载
new -
@appleapple 这不会处理堆栈上分配的内存。
-
...我想您可以将“复杂”方法包装到方法/库中。
-
@user202729 是对的,但根据 OP 写的内容,我认为他对动态内存更感兴趣。顺便说一句,对于堆栈内存,通常对象的地址就足够了。
-
为什么不直接在内存分析器下运行呢?