我正在Visual Studio 2022上使用Qt和OpenCV进行c++项目。我正在使用videoccapture使用open()函数打开rtsp流。
然而,当我试图打开rtsp流时,我得到了一个异常,如下所示:
Exception thrown at 0x00007FFB37BB4F69 in faulty.exe: Microsoft C++ exception: MONZA::DdiThreadingContext<MONZA::AdapterTraits_Gen12LP>::msg_end at memory location 0x00000029218FF9F0.
The thread 0x45d8 has exited with code 0 (0x0).
相关代码如下:
string un = port_ipDialog->devInfo.szUserName;
string stri = "rtsp://" + un + ":" + PWD + "@" + IP + "/gen/fakescreen?channel=5&subtype=2";
memcpy(rtsp, stri.c_str(), 256);
if (!capture.open(rtsp)) {
QMessageBox::warning(nullptr, "notice", "fail!!", QMessageBox::Yes | QMessageBox::Yes);
return;
}
奇怪的是,同样的事情在另一台电脑上运行得很好。
谁能给一些洞察这个异常和为什么它可能发生?我很感激。
这一行调用了UB
memcpy(rtsp, stri.c_str(), 256);
的输入小于256,那么rtsp的大小是多少?
为什么不使用strcpy