【发布时间】:2014-12-18 10:35:37
【问题描述】:
我正在做一个 c++ 项目来做一些计算。我正在使用 boost 库来进行这些计算。我有一个奇怪的错误(结果不正确或程序冻结)。当我检查发生了什么时,我意识到在创建一个双精度矩阵并将矩阵乘以 0 之后(以确保一切都等于零,例如:
matrix<double> *A=new matrix<double>(10,100);
(*A)*=0.0;
我的矩阵并不总是被严格的 0 填充(这是在一个称为 LOT 的方法中,指针被正确删除并且我检查了我没有任何内存泄漏),有时是负零 (-0.0) 或甚至是NaN! 然后我意识到使用方法 clear() 会将所有值设置为默认值(0 表示双精度)。因此,即使我确实有解决方案,这也很奇特! 像往常一样,问题是:我做错了什么(更有可能)还是库中存在错误(不太可能)?
PS:我确实使用 intel 编译器(2015 版)
【问题讨论】:
-
你只是在创建一个矩阵,你并没有初始化它的内容。首先用一些值初始化它,然后对其进行操作。