1
data
属性のバッファのアドレスをcv::Mat
オブジェクトに手動で追加し、後でそのバッファを削除するとどうなりますか?例えば cv :: Mat.dataを上書きするとどうなりますか
cv::Mat test;
test.data = (address of Buffer A);
Buffer A
が削除されたときtest.data
に何が起こるのだろうか?
data
属性のバッファのアドレスをcv::Mat
オブジェクトに手動で追加し、後でそのバッファを削除するとどうなりますか?例えば cv :: Mat.dataを上書きするとどうなりますか
cv::Mat test;
test.data = (address of Buffer A);
Buffer A
が削除されたときtest.data
に何が起こるのだろうか?
ドキュメント:http://docs.opencv.org/3.1.0/d3/d63/classcv_1_1Mat.html
int rows, cols, type; // you need initialize them
void* data = (address of Buffer A)
cv::Mat test = cv::Mat(rows, cols, type, data); // according to documentation, test does not own data
cv::Mat copy = test.clone() // copy copies is a deep copy of test
だから、それは削除だ後にテストを、緩衝液Aを所有していないので、あなたがtest.dataにアクセスする場合、それはUBです。 ただし、copyは深いコピーであるため、copy.dataにアクセスできます
あなたが記述したコードを投稿できますか? – Tim
なぜこれらの2つのコンストラクタの1つを使用しないのですか? 'Mat(int行、int cols、int型、void *データ、size_tステップ= AUTO_STEP); Mat(サイズsize、int型、void * data、size_t step = AUTO_STEP); '正しいタイプとサイズとともに、データポインタを設定します。 http://docs.opencv.org/3.1.0/d3/d63/classcv_1_1Mat.htmlのドキュメントをご覧ください。 –