多精度库zkcm和sizeof()

时间:2014-02-14 13:37:47

标签: c++ memory sizeof multiprecision zkcm

我正在使用 multiprecision复数库zkcm),并希望使用complex<double>比较一些结果。

有一次,我尝试使用sizeof()仔细检查变量的内存,但无论我为变量分配多大的内存,我都得到相同的答案(32);即,无论我在zkcm_set_default_prec()内使用的是什么,下面的代码段都会打印32:

zkcm_set_default_prec(128);
zkcm_class z;
cout << sizeof(z) << endl;

是否有另一种方法而不是sizeof()来获取变量的内存大小?

2 个答案:

答案 0 :(得分:1)

我无法测试它,the documentation有点模糊,但有一个方法有这个签名:

int zkcm class::get_prec ( void ) const;

如下所述:

  

获取对象的内部精度,即用于“this”复数

的每个部分的精度

这可能会返回位数,这应该与使用的内存量成比例。当然,确切的关系是实现细节。类本身可能只包含一个指向堆分配缓冲区的指针,其中包含数字和一些簿记信息。 sizeof运算符(在C ++中)是完全静态的,即在编译时计算。

答案 1 :(得分:1)

  

有一次我尝试使用sizeof()仔细检查变量的内存,但无论我将变量分配给内存有多大,我都得到相同的答案(32)

sizeof()在编译时进行评估,C ++语言无法在运行时,周期内更改该值。可能有一些界面提供您需要的信息(直接或间接),可能不是。但sizeof()绝对不是达到你想要的方式。