多精度库 zkcm 和 sizeof()

Multiprecision library zkcm and sizeof()

本文关键字:sizeof zkcm 精度      更新时间:2023-10-16

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

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

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

除了sizeof()之外,还有其他方法可以获取变量的内存大小吗?

我无法测试它,文档有点模糊,但是有一个带有此签名的方法:

int zkcm class::get_prec ( void ) const;

描述如下:

获取对象的内部精度,即用于"this"复数的每个部分的精度

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

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

sizeof()是在编译时计算的,C++语言中无法在运行时更改该值。可能有一些接口提供您需要的信息(直接或间接),也可能不是。但sizeof()绝对不是实现你想要的方式。