相机缓冲数据三种数据格式(数组、指针new、vector)

相机缓冲数据三种数据格式(数组、指针new、vector)

推荐方案:
可变大小,使用 std::vector及其data()函数可获取unsigned char*
固定大小、小数据量,使用数组

std::vector<unsignedchar>transBuf;//vectorstd::vector<ushort>m_dataBuffer;//unsignedcharbuffers[65][64*2048];//数组

//智能指针

std::unique_ptr<uchar[]>transBuf;transBuf=std::make_unique<unsignedchar[]>(nSize*2);//Out-of-bounds access will crash, or sending signals to subsequent slot functions will crash.transBuf.get();

二.使用注意事项

1.巨大栈数组导致栈溢出风险
Windows默认栈大小仅1MB,Linux默认8MB
2.堆区越界,运行正常,但delete[]会崩
智能指针:越界会崩,或者发送信号给后续的槽函数会崩
3.二维 vector 的每行是独立的堆分配,内存不连续
4.指针、堆区三种创建方式