【发布时间】:2022-11-10 00:16:38
【问题描述】:
只需查看以下代码 sn-p -
# include "opencv4/opencv2/opencv.hpp"
# include "iostream"
int main() {
while (true) {
cv::Mat* mat = new cv::Mat(2000, 2000, CV_8UC3);
std::cout << "mat size" << mat->size() << std::endl;
mat->release();
std::cout << "mat size after" << mat->size() << std::endl;
}
}
运行后的问题是 - ram 不断填充。 我有 48 GB 的内存,在循环运行的几分钟内就被填满了。
如果我要释放内存,那么为什么它会不断获取我的内存。
【问题讨论】:
-
为什么使用
new?只有cv::Mat mat(2000, 2000, CV_8UC3);没有mat->release();应该没问题。每个new必须后跟delete,并且您的代码中没有。您很少需要在现代 C++ 中直接使用new/delete。如果你认为你需要它,请先重新考虑它。 -
是的,得到了你.. ;)
标签: c++ opencv memory-leaks