------------------------------------------
关于opencv cv::Mat数据结构的说明
------------------------------------------
cv::Mat类在对象复制拷贝时采用的是浅复制模式,
如假如已有cv::Mat对象 m1;
cv::Mat m2 = m1; //浅复制构造,实际存储空间是同一块
cv::Mat m3;
m3 = m1; // 浅复制赋值,实际存储空间是同一块
此时,如果你修改m1,那么m2,m3也会被修改。
那么,如果是浅复制,析构函数调用时会不会导致动态申请内存多次
被删除呢?
答案是不会的,因为cv::Mat对申请内存采用了计数的方式,每次复制和
赋值,计数加一,每次析构计数减一,这样确保内存既不会泄漏,也不会
被多次删除。
进一步,cv::Mat又有没采用copy-on-write这种机制实现数据既能共享,
又能独立呢?答案是:没有!
因此,如果想让每个对象都能有独立的数据空间,建议采用函数
cv::Mat::copyto()