有什么方法可以知道对象的动态大小吗?
我的意思是,我有一些对象可以在执行期间增加它们的大小,我想监视它。
我需要像sizeof()这样的方法,但它可以与动态对象一起使用,并返回该对象的实际内存使用量。
提前谢谢你,
答案 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 ++语法的一部分提供的;它是一个运行时函数。