我正在使用 multiprecision复数库(zkcm),并希望使用complex<double>
比较一些结果。
有一次,我尝试使用sizeof()
仔细检查变量的内存,但无论我为变量分配多大的内存,我都得到相同的答案(32);即,无论我在zkcm_set_default_prec()
内使用的是什么,下面的代码段都会打印32:
zkcm_set_default_prec(128);
zkcm_class z;
cout << sizeof(z) << endl;
是否有另一种方法而不是sizeof()
来获取变量的内存大小?
答案 0 :(得分:1)
我无法测试它,the documentation有点模糊,但有一个方法有这个签名:
int zkcm class::get_prec ( void ) const;
如下所述:
获取对象的内部精度,即用于“this”复数
的每个部分的精度
这可能会返回位数,这应该与使用的内存量成比例。当然,确切的关系是实现细节。类本身可能只包含一个指向堆分配缓冲区的指针,其中包含数字和一些簿记信息。 sizeof
运算符(在C ++中)是完全静态的,即在编译时计算。
答案 1 :(得分:1)
有一次我尝试使用sizeof()仔细检查变量的内存,但无论我将变量分配给内存有多大,我都得到相同的答案(32)
sizeof()
在编译时进行评估,C ++语言无法在运行时,周期内更改该值。可能有一些界面提供您需要的信息(直接或间接),可能不是。但sizeof()
绝对不是达到你想要的方式。