#include <iostream>
#include <opencv2/core.hpp>
int main()
{
cv::Mat test[100000];
std::cout << "testing" << std::endl;
return 0;
}
返回 seg 错误。我找不到有关此设置的任何信息。我想不出为什么它会弄乱内存,因为我没有用任何东西初始化 Mats(因此它们都是空的,使用更多内存的 4K 图像没有问题(。
解决方案是将Mat
s (cv::Mat[]
( 数组转换为Mat
s (std::vector( 的向量。我不会假装理解为什么,但我想向量在引擎盖下有更好的内存管理。
#include <iostream>
#include <opencv2/core.hpp>
int main()
{
int size = 100000;
std::vector<cv::Mat> test;
test.resize(size);
for(int i = 0; i < size; i++)
{test[i] = cv::Mat::zeros(1, 256, CV_32F);}
std::cout << "testing" << std::endl;
return 0;
}