对象的动态大小[以C ++格式]

时间:2011-12-26 11:56:04

标签: c++ memory-management heap

有什么方法可以知道对象的动态大小吗?

我的意思是,我有一些对象可以在执行期间增加它们的大小,我想监视它。

我需要像sizeof()这样的方法,但它可以与动态对象一起使用,并返回该对象的实际内存使用量。

提前谢谢你,

3 个答案:

答案 0 :(得分:4)

该语言没有提供这样的内置功能 langauge提供的结构不需要你知道这样的大小,语言的用户就是从中抽象出来的。
如果你仍然需要它你用户必须自己跟踪它。

答案 1 :(得分:1)

vector是任何数据类型的动态容器。用法:std::vector <data_type> my_variable;

例如:vector <int> my_int_Vec;声明一个int的向量。

使用vector::size知道向量所持有的元素数量。

使用vector::capacity了解计算机为矢量分配的内存。容量可能超过大小,以适应载体的增长。

#include <vector>
#include <iostream>
using namespace std;

int main( )
{

    vector <int> my_int_Vec;
    vector <int>::size_type Size_my_int_Vec, Capacity_my_int_Vec;

    my_int_Vec.push_back( 1 );
    Size_my_int_Vec = my_int_Vec.size( );
    Capacity_my_int_Vec = my_int_Vec.capacity( );

    cout << "Vector contains " << Size_my_int_Vec  << " elements." << endl;
    cout << "Vector size  is " << Size_my_int_Vec * sizeof(int) << " bytes.\n" << endl;
    cout << "Vector capacity  is " << Capacity_my_int_Vec * sizeof(int) << " bytes.\n" << endl;    
return 0;
}

答案 2 :(得分:1)

正如对象控制自己的逻辑以“增加它们的大小”概念一样,它们也必须控制自己的逻辑以“返回动态大小”。 C ++语言本身并不理解以你所说的方式“增加对象大小”意味着什么。

这个明显的例子已经发布:std::vector提供了.size()方法。它不是作为C ++语法的一部分提供的;它是一个运行时函数。