我正在使用多精度复数库(zkcm),并希望比较一些结果使用complex<double>。
有一次,我尝试使用sizeof()对变量的内存进行双重检查,但是无论我将变量分配到多大的内存,我都会得到相同的答案( 32 );也就是说,无论我在zkcm_set_default_prec()中使用什么,下面的代码片段都会打印32
zkcm_set_default_prec(128);
zkcm_class z;
cout << sizeof(z) << endl;除了sizeof(),还有其他方法可以获得变量的内存大小吗?
发布于 2016-01-14 14:07:23
我无法测试它,而且文献资料有点模糊,但是有一个具有此签名的方法:
int zkcm class::get_prec ( void ) const;描述如下:
获取对象的内部精度,即用于“此”复数每个部分的精度。
这可能会返回数字的数量,这应该与使用的内存量成正比。当然,确切的关系是实现细节。类本身可能只保存指向数字所在的堆分配缓冲区的指针和一些簿记信息。sizeof操作符(在C++中)是完全静态的,即在编译时计算.
发布于 2016-01-14 14:20:45
有一次,我尝试使用sizeof of ()对变量的内存进行双重检查,但是无论我将变量分配到多大的内存,我得到的答案都是相同的(32)
sizeof()是在编译时计算的,C++语言无法在运行时更改该值。可能有一些接口提供您需要的信息(无论是直接的还是间接的),但可能不是。但是sizeof()绝对不是实现你想要的东西的方法。
https://stackoverflow.com/questions/21780873
复制相似问题