1

私は OpenCV チュートリアルを読んでいましたが、OpenCV のイメージ ホルダー クラス (cv::Mat) について次のように述べています。

The cv::Mat class implements reference counting and shallow copy such that when an image 
is assigned to another one, the image data (that is the pixels) is not copied, and both images 
will point to the same memory block. This also applies to images passed by value or returned 
by value. A reference count is kept such that the memory will be released only when all of the 
references to the image will be destructed. 

私は特にThis also applies to images passed by value or returned.、値渡しで同じメモリブロックを指すことができる方法は?という部分に興味があります。=これは、オペレーターの過負荷に関係しているように感じます。ただし、画像が返されたとしても、同じメモリ ブロックを指す画像のみが返され、新しいメモリ ブロックは作成されません。彼らがこれをどのように実装したかわかりません。

しかし、私が理解していることは次のとおりです。

値渡しとイメージを返すことで、新しいイメージが同じメモリ ブロックを共有することを考えると、参照カウントを実装することは理にかなっています。

しかし、オブジェクトが値で返されたり渡されたりする場合でも、メモリ ブロックがどのように共有されるのか説明していただけますか?

4

4 に答える 4