【发布时间】:2015-06-15 21:57:24
【问题描述】:
在单独的线程中转换大图像(超过 1Mb)时,ImageMagick 库崩溃。 我的简单测试程序也崩溃并显示相同的消息:
#include <thread>
void foo()
{
const int size = 0x7FCC9; //program crashes when size is equal or more than this value
char buff[size];
for(int i = 0; i < size; ++i)
{
buff[i] = i;
}
}
int main(int argc, char *argv[])
{
foo(); //passed!
std::thread thr(foo);
thr.join(); //got error :(
return 0;
}
i == 58736 :)
线程2:EXC_BAD_ACCESS(代码=2,地址=0x103512000)
为什么我的简单代码会产生这个错误? 如何在 MAC OS 上增加线程的内存大小?
【问题讨论】:
-
这段代码和 ImageMagick 有什么关系?它不包含任何 ImageMagick 标头或调用任何 ImageMagick 函数。
-
没错。如果在单独的线程中启动 ImageMagick,它会在 ImageMagick 从大文件中读取所有内容时崩溃。我的简单程序创建缓冲区并对其进行迭代,就像我们读取和转换大文件一样。
标签: multithreading macos memory crash imagemagick