我正在使用callgrind来分析C ++程序。该程序具有非常复杂的主要方法(解决了NP完全问题),并且遇到了很大的问题,成为了应用程序的主要资源浪费者(在这种方法中,大约120行有96%的时间)。
虽然我不希望出现奇迹,因为问题很难解决,但是该方法花费了60%的时间进行分配/取消分配。因此,我想尝试了解在哪里/如何精确地请求内存,以便我可以决定是否有更好的方法来实现它。
但是Callgrind似乎无法给我此信息。有什么办法可以获取吗?我在Linux上,没有在使用IDE(只是vim和g ++)。
编辑:我看过建议的重复问题(track C++ memory allocations)。但是,除非我有误解,否则它似乎不是我所需要的。 Massif看起来像一个跟踪内存使用情况的工具。我的应用程序的内存使用量是相对恒定的(总共大约1MB),但是我有恒定的小分配/取消分配,我不知道来源,只有一般的下落。我不在乎谁在给定的快照中有内存,我不在乎谁一直在分配和释放内存。 Massif可以用来追踪这些吗?