関数の導関数を調べて、あるしきい値よりも大きな勾配を持つポイントを収集するはずの C++ コードが少しあります。問題が発生しているので、どこにでも印刷ステートメントを配置して、何が問題なのかを把握しています。std::cout<< を使用して配列のサイズを出力すると、関数の出力が変更されるという不可解な問題に遭遇しました。コード スニペットは次のとおりです。
int* Tools::findPoi(float* y, int size, float threshold, int width, float step, int* outsize){
int poi[size];
float* derive = derivative(smooth(y,size,width),size, step);
int n = 0;
std::cout<<size<<" data size\n";
for(int i = 0; i<size; i++) {
if(derive[i] > threshold) {
poi[n] = i;
n++;
}
}
*outsize = n-1;
return poi;
}
コメントアウトされた行「std::count...」がなければ、82 poi が得られます。しかし、コメントアウトするか削除すると、84 poi になります。他に何も変更はありません。この print ステートメントだけです。なぜ、またはどのように出力が変わる可能性があるのか について、私はとても混乱しています。どんな助けでも大歓迎です。
編集:わかりました、実際にはランダムです。変数 n は、実行するたびに異なるため、メモリ内で何か奇妙なことが起こっていると思います。