垫子对象数组太大会导致 Seg 错误


#include <iostream>
#include <opencv2/core.hpp>
int main()
{
cv::Mat test[100000];
std::cout << "testing" << std::endl;
return 0;
}

返回 seg 错误。我找不到有关此设置的任何信息。我想不出为什么它会弄乱内存,因为我没有用任何东西初始化 Mats(因此它们都是空的,使用更多内存的 4K 图像没有问题(。

解决方案是将Mats (cv::Mat[]( 数组转换为Mats (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;
}

最新更新