c++ - 如何找到任何对象使用的内存

标签 c++ stl memory-management

class Help
{
public:
        Help();
        ~Help();

        typedef std::set<string> Terms;
        typedef std::map<string, std::pair<int,Terms> > TermMap;
        typedef std::multimap<int, string, greater<int> > TermsMap;

private:

        TermMap  terms;
        TermsMap    termsMap;
};

我们如何找到对象termtermsMap 使用的内存(以字节为单位)。我们有图书馆吗?

最佳答案

如果您正在寻找对象的全部内存使用情况,这在 C++ 中通常无法解决 - 虽然我们可以通过 sizeof() 获取实例本身的大小,但对象总是可以根据需要动态分配内存。

如果你能找出容器中单个元素的大小,你可以得到一个下限:

size = sizeof(map<type>) + sum_of_element_sizes;

请记住,尽管容器仍然可以分配额外的内存作为实现细节,对于像 vectorstring 这样的容器,您必须检查 allocated size .

关于c++ - 如何找到任何对象使用的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2160300/

相关文章:

c++ - 为什么 boost 包含两个不同版本的 strong_typedef.hpp?

c++ - 为什么 clang 缺少参数包错误的默认参数?

c++ - 在点云库中使用快速双边滤波器

c++ - STL 随机分布和可移植性

ios - 使用 UIImageViews 和框架或 CALayers 或其他东西?

iphone - iPhone 中的内存泄漏

c++ - Windows Mobile 上的连续 VirtualAlloc 行为

c++ - 创建函数变量 vector 时出现 "No matching function for call"错误

c++ - STL 对输入与 STL 映射

c++ - 修改列表列表