#include <iostream>
#include <opencv2/core.hpp>
int main()
{
cv::Mat test[100000];
std::cout << "testing" << std::endl;
return 0;
}
返回seg错误。我找不到有关此设置的任何信息。我无法想象为什么它会弄乱内存,因为我没有用任何东西初始化Mats(因此它们都是空的,使用更多内存的4K图像没有问题)。
答案 0 :(得分:0)
解决方案是将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;
}