什么是垃圾值铛检查
问题描述:
我有以下警告:什么是垃圾值铛检查
test.cpp:14:25: warning: The right operand of '/' is a garbage value
return (std::abs(a)/size) > 10;
^~~~~
的这段代码:
#include <algorithm>
#include <complex>
#include <vector>
#include <iostream>
using namespace std;
double
pitchDetect(const std::vector<std::complex<double>> &dft,
unsigned int samplingRate) noexcept {
if (dft.empty())
return 0.0;
auto it = find_if(begin(dft), end(dft),
[size = dft.size()](const std::complex<double> &a) {
return (std::abs(a)/size) > 10;
});
return 0.0;
}
我不明白是什么问题!
答
这看起来像bug 22833,其固定在躯干:
给予一个lambda捕获参数的显式值(新特征在C++ 14)使得分析器相信值是未定义的。
作为一种变通方法,你可以尝试冲顶拉姆达外初始化捕获:
auto const size = dft.size();
auto it = find_if(begin(dft), end(dft),
[size](const std::complex<double> &a) {
return (std::abs(a)/size) > 10;
});