TBB を使用して、OpenCV を使用するコンピューター ビジョン プロジェクトのパフォーマンスを向上させようとしています。これは、アクセス違反を与えるコードの部分です。
#include <opencv/cv.h>
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "tbb/pipeline.h"
#include "tbb/tick_count.h"
#include "tbb/task_scheduler_init.h"
#include "tbb/tbb_allocator.h"
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
string file = "myimage.jpg";
Mat* mats2=tbb::tbb_allocator<Mat>().allocate(100);
for (int i = 0 ; i < 100 ; ++i)
{
mats2[i]=imread(file); <===== Access Violation
imshow("temp",mats3[i]);
waitKey(1);
}
}
なぜこれがアクセス違反なのですか? Mats2 は 0 ではなく、確実にメモリ内のアドレスに割り当てられています。このリンクから使用できる他の関数を知っていますが、このエラーにつながる tbb_allocator で何が起こるか知りたいです。mallocまたはscalable_mallocと一緒に使用すると、コードはエラーになりません。