3

我正在使用多精度复数库( zkcm ) 并希望使用complex<double>.

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

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

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

4

2 回答 2

1

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

int zkcm class::get_prec ( void ) const;

描述如下:

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

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

于 2016-01-14T14:07:23.597 回答
1

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

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

于 2016-01-14T14:20:45.180 回答