CImg<float>* img = NULL;
bool loaded;
while ( !loaded )
{
loaded = true;
try
{
img = &CImg<float>( filename );
}
catch ( CImgException )
{
loaded = false;
fprintf( stdout, "ERROR: could not load %smap file.\n", mapname );
}
}
当我输入CImg能够查找和阅读的有效图像文件名时,img.width()
和img.height()
都返回-858993460
。根据{{3}},img.width()
的返回类型为int
,但提取的值为img._width
,unsigned int
。
答案 0 :(得分:0)
正如GManNickG在评论中提到的那样,在img = &CImg<float>( filename );
行创建了CImg<float>
类型的临时对象,并将其地址存储到img
变量中。此临时对象仅在块内有效:
try
{
img = &CImg<float>( filename );
}
当执行离开此范围并且您的指针带有一些随机内容(例如-858993460
字段中的_width
)时,它会被破坏。