gpt4 book ai didi

c - 监控/调试内存使用 C

转载 作者:行者123 更新时间:2023-12-02 00:23:06 25 4
gpt4 key购买 nike

我有一个问题,我的程序使用了比我认为应该多得多的内存

我使用过 valgrind,它是发现内存问题(例如缓冲区溢出和内存泄漏)的天赐之物

我这里的问题是它看起来不像是泄漏,只是用法与我认为应该的不一致

是否有其他工具可用于监控内存使用情况,就像您使用调试器(例如 gdb)监控变量值一样?

massif 告诉我大部分堆内存是通过这个语句分配的:

->98.80% (1,338,700,288B) 0x40341D5: caa (caa.c:196)

该语句是将元素推送到 UT_array 的调用,例如

utarray_push_back(utarr_ctr_pdws, &pdw);

pdw 是一个指向结构体的指针,是一个栈变量

所以看起来 UT_array 正在分配的内存没有被释放,但我在几行后面有另一个声明明确地这样做:

utarray_free(utarr_ctr_pdws);

UT_array 只是一个指针数组,因此不需要在 UT_ICD 辅助结构中定义任何额外的 dtor 函数。

如果有人有任何使用 UT_arrays 的经验,也许您可​​以阐明为什么它会占用这么多内存?

最佳答案

valgrind massif 是这里的答案,它是一个堆内存分析工具(参见 http://valgrind.org/docs/manual/ms-manual.html)

关于c - 监控/调试内存使用 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9996307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com