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
。根据documentation,img.width()
的返回类型为int
,但是如果获取的值为img._width
,则为unsigned int
。 最佳答案
正如GManNickG在评论中提到的那样,在img = &CImg<float>( filename );
行创建了CImg<float>
类型的临时对象,并将其地址存储在img
变量中。该临时对象仅在块内有效:
try
{
img = &CImg<float>( filename );
}
当执行离开此作用域并且您有一些随机内容的无效指针时(例如,
-858993460
字段中的_width
),它会被破坏。