编写扫描程序。在它读取一个图像后,它调用convertToPDF()
然后读取下一个图像。RUN FINISHED; Segmentation fault: 11;
当在线程中声明 Image 时,程序段错误 ( )。相同的代码在主线程中运行时可以正常工作,我将其thrPDF
移至convertToPDF
以确保。所以我认为这与我头脑中的 Magick++ 内存分配有关。任何帮助将非常感激。
void ScanWindow::convertToPDF(string fileName)
{
pthread_t convert;
string* args = new string(fileName);
void *thrPDF(void*);
pthread_create(&convert,NULL,thrPDF,args);
}
void *thrPDF(void* a)
{
string* fName = (string*) a;
string newFile = fName->substr(0,fName->length()-3) + "pdf";
Magick::Image img(*fName); // this is the line that seg faults
img.magick("pdf");
img.write(newFile);
pthread_exit(0);
}
这是调用堆栈:
omp_get_max_threads(?)
GetOpenMPMaximumThreads
inlined AcquirePixelCache(?)
AcquireImage(?)
Magick::ImageRef::ImageRef(?)
Magick::Image::Image(?)
thrPDF(?)
_pthread_start(?)
thread_start( ?)