私はCにMATLABコードからプログラムを翻訳に取り組んでいます++私はLinux上で(gccのバージョン4.9.2)をOpenCVのLIBSを使用する必要がどこC++ - ベクトル<class>とstd :: bad_alloc
だから私は、変換しようとしていますMathWorks社のMATLABのコード行:
repeatedMat = repmat(originalMat,[1 1 k]);
と私が書いた最後のコードはこれです:
void repeat(cv::Mat img, std::vector <cv::Mat> &output, uint32_t nx, uint32_t ny, uint32_t z)
{
cv::Mat tmpMat = cv::repeat(img, nx, ny);
output = std::vector <Mat> (z);
for (uint32_t i = 0; i < output.size(); i++)
output.insert(output.end(), tmpMat);
}
問題は、私はいつもSTDに実行することです:: bad_allocエラー
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted
がこれを行うには良い(と作業)方法はあります..私は理由を正確に知りませんが、私はいくつかのメモリリークを考えるのですか?
すべてのコードが 'ベクトル出力(Z、IMG)に縮小しなければならない。それに加えて' –
rahnema1
、あなたがvector' 'の最後に要素を追加したい場合は、あなたが使用する必要があります' push_back'メソッドを呼び出します。 –
ループが反復されるたびに、 'output'ベクトルが大きくなるので、プログラムがメモリ不足になるまでループ* never *は終わりに達します。 – Gonmator