Моя программа написана на C ++. Я использую Visual Studio 2017.
Мой код компилируется и работает правильно в режиме Release, но выдает исключение в режиме Debug :
Необработанное исключение в 0x00007FF9A4EAD428 (ucrtbase.dll) в
MyAssemblyName.exe: недопустимый параметр был передан функции
который считает неверные параметры фатальными.
Это исключение выдается в функции img.assign()
CImg<unsigned char> img;
try {
img.assign(picPath.c_str());
}
catch (CImgException) {
// ...
}
В CImg это код, который выполняется:
std::FILE *const nfile = file?file:cimg::fopen(filename,"rb");
struct jpeg_decompress_struct cinfo;
struct _cimg_error_mgr jerr;
cinfo.err = jpeg_std_error(&jerr.original);
jerr.original.error_exit = _cimg_jpeg_error_exit;
if (setjmp(jerr.setjmp_buffer)) { // JPEG error
if (!file) cimg::fclose(nfile);
throw CImgIOException(_cimg_instance
"load_jpeg(): Error message returned by libjpeg: %s.",
cimg_instance,jerr.message);
}
jpeg_create_decompress(&cinfo);
jpeg_stdio_src(&cinfo,nfile);
jpeg_read_header(&cinfo,TRUE);
jpeg_start_decompress(&cinfo);
Исключение выдается при выполнении jpeg_read_header()
.
Почему это происходит? Почему только в режиме отладки, а не в версии?