如何在运行时确定c对象的内存

如何在运行时确定c对象的内存,第1张

概述我试图在运行时确定对象的大小. sizeof不起作用,因为这会在编译时返回大小.这是我的意思的一个例子: class Foo {public: Foo() { c = new char[1024*1024*1024]; } ~Foo() { delete[] c; }private: char 我试图在运行时确定对象的大小. sizeof不起作用,因为这会在编译时返回大小.这是我的意思的一个例子:
class Foo {public:    Foo()     {        c = new char[1024*1024*1024];    }    ~Foo()     {         delete[] c;     }private:    char *c;};

在这种情况下,sizeof(Foo)将是4个字节而不是~1GB.如何在运行时确定Foo的大小?提前致谢.

解决方法 你需要以某种方式自己跟踪它.例如:
struct Foo {    Foo()        : elements(1024 * 1024 * 1024)     {        c.reset(new char[elements]);    }    boost::scoped_array<char> c;    int elements;};

请注意,您应该使用智能指针容器来管理动态分配的对象,这样您就不必手动管理它们的生命周期.在这里,我演示了scoped_array的使用,这是一个非常有用的容器.您还可以使用shared_array或将shared_ptr与自定义删除器一起使用.

总结

以上是内存溢出为你收集整理的如何在运行时确定c对象的内存全部内容,希望文章能够帮你解决如何在运行时确定c对象的内存所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1240613.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存