内存位置的另一个std::bad_alloc
Another std::bad_alloc at memory location
我搜索了这类错误,发现了很多。不幸的是,没有任何线索真正帮助我。
我有图像文件,我保存在array
或vector
或其他任何文件中。
在大约1.8GB(~1439个图像)之后,内存位置出现错误std::bad_alloc
。因此,我尝试以不同的方式声明array
,但每次都会出现相同的错误。
Image* img;
Image img[180000];
Image* img = new Image[180000]
vector<Image> img;
(180k将是1分钟的帧)。录制1分钟并不重要,但如果能保存1439帧以上就好了。或者至少要理解为什么会出现这种错误,或者更确切地说,为什么会在1.8 GB时出现这种错误。
也许有人能帮我解释一下?
PS:我使用32位系统
问题是,将图像保存在文件夹或其他文件中的时间太长。也许我必须找到一种压缩方法,它可以让我在阵列中保存图像的必要信息,然后我可以在完成后恢复帧。
我听说你可以转换一个x和y"线"中的图像,它包含了所有这些信息。但这是如何运作的另一个问题。
马克·英格拉姆的回答正是我理解这个问题所需要的。感谢
编辑:哦,我明白了,我解释我的问题还不够。我没有图像并将它们加载到我的程序中。我有一台相机,它以50Hz的频率录制帧,所以在录制时我没有时间保存帧。
内存不足。在32位系统上(至少在Windows上),您最多只能分配~2GB的内存。您只需要在需要时动态加载数据,而当您不再需要图像数据时,请再次将其丢弃。
实际上,这个限制将低于2GB,因为内存是按块分配的(即,它不是连续分配的)。这意味着,如果混合使用小型和大型对象分配,您将经历堆碎片化,这将大大减少您实际可以分配的内存量。
将图像存储在文件夹中,然后一次加载一个。动态内存分配是你的朋友。
将18000张图像加载到一起,我想不出能完成什么。即使在超级计算机上,你也永远不会处理它。
- 使用来自 Excel VBA 的 C++ dll 时"Bad DLL calling convention" - 如何解决?
- C++17 编解码器在将标准::字符串转换为标准::字符串时抛出"bad conversion"
- 对于代理容器上的迭代器来说,"least bad implementation"可能是什么?
- 组件对象模型 (COM):IMalloc::Alloc 在哪里分配内存?
- 获取错误:在抛出"std::bad::alloc"的实例后终止调用 what(): std::bad_alloc
- 为什么 GetSystemMetrics (SM_CXVIRTUALSCREEN) 返回'bad'值?
- 将 lambda 传递给 STL 集时出错"bad function call"
- 新的 C++14 位分隔符处"Bad Character" Eclipse Oxygen 错误
- 使用 #define 被认为是"bad practice"吗?
- "400 Bad request"使用 OpenSSL BIO 进行请求时
- CGAL:Hausdorff距离不良Alloc
- 解密文件AES_256_CBC返回"bad decrypt"错误
- 在C++流中,eof(),fail(),bad()和good()有什么区别
- C STD ::初始化类对象中的Alloc错误错误
- make / gcc:"bad build"的可能原因是什么?
- 什么是地址0xbaddc0dedeadbead "Bad decode dead bead"
- 在多线程环境中,什么可能导致"bad file descriptor"?
- 尝试解决HackerBank上的BFS挑战时出现错误的alloc异常
- "std::vector"在调整大小时引发"bad allocation"异常
- 尝试使用 execp、dup2 和管道实现 shell,挂起或"bad file descriptor"