计算"new"和"delete"字节
Counting "new" and "delete" bytes
我有一个。net项目,使用c++项目,正在消耗大量内存。
我想知道是否有快速简便的方法来计算由new分配的流入字节和由delete操作符释放的流出字节。添加一些日志之类的东西
这两个操作符的源代码都是由Visual Studio提供的,所以我可以破解它。
问题是我可以看到巨大的虚拟机消耗,我想调查为什么。我尝试了几个内存分析器,但没有一个可以处理。net应用程序中的非托管c++分配
通常像Valgrnid或Rational Purify这样的内存分析工具可以帮助您分析程序的内存使用情况。
如果你仍然想拥有自己的实现,
您可以通过重载来替换全局new
和delete
操作符,并且在您自己的重载操作符中可以维护分配的内存计数。
如果你选择/被迫遵循第二个选项,有一些方面需要注意,你可以在这里阅读这个答案中的细节。
如果您使用STL:
STL容器类依次使用全局new
&delete
分配操作符。所以如果你把new
&delete
全局操作符,则STL将使用它们而不是std new和delete操作符
您可以附加windbg并使用!heap -s
命令开始您的调查。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 在UNIX系统中使用DIR查找文件的字节大小
- 运算符C++ "delete []"仅删除 2 个前值
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- std::当在256字节边界上写入整数时,流的奇怪行为
- 当比特(而不是字节)的顺序至关重要时的持久性
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 如何在文件中查找字节序列
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 字节到位运算符重载C++
- 在java中读取c++字节的位字段
- g++用户定义的动态链接库上的全局new和delete运算符
- 使用 std::vector::reverse_iterator 将 int 序列化为字节向量?
- 字节真的是最小可寻址单元吗
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- ::运算符 delete(指针) 返回释放的字节大小
- 无效的free() / delete / delete[] / realloc(), 4 字节在大小为 16 的块内分配
- 计算"new"和"delete"字节
- 使用delete[]但字节肯定会丢失,为什么?