我正在使用多精度复数库(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()
绝对不是实现你想要的方式。