循环中的局部变量含有的指针传给全局变量
- 循环结束后局部变量析构,其含有的指针指向的内存释放掉了,指针变成野指针,不能使用了。
举例:
int total = 10;
std::vector<cv::Mat> ans;
for (int i = 0; i < total; i++) {
cv::Mat frame = cv::imread(file_names[i]);
int w = frame.cols;
int h = frame.rows;
unsigned char *ptr = (unsigned char *) frame.data;
ans.push_back(cv::Mat(h, w, CV_8UC3, ptr));
}
// 循环外,ans 中的 Mat 无效, 因为 frame.data 这个指针指向的内存已经释放了。
- 循环外,ans 中的 Mat 无效, 因为 frame.data 这个指针指向的内存已经释放了。