为什么我的 CImg<float> 的宽度和高度都是负值?
Why does my CImg<float> have negative width and height?
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()
都 return -858993460
。根据documentation,img.width()
的return类型是int
,但是fetches的值是img._width
,一个unsigned int
.
正如 GManNickG 在评论中提到的那样,在第 img = &CImg<float>( filename );
行创建了 CImg<float>
类型的临时对象,并将其地址存储到 img
变量中。此临时对象仅在块内有效:
try
{
img = &CImg<float>( filename );
}
当执行离开这个范围时它被破坏并且你有一些随机内容的无效指针(例如 _width
字段中的 -858993460
)。
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()
都 return -858993460
。根据documentation,img.width()
的return类型是int
,但是fetches的值是img._width
,一个unsigned int
.
正如 GManNickG 在评论中提到的那样,在第 img = &CImg<float>( filename );
行创建了 CImg<float>
类型的临时对象,并将其地址存储到 img
变量中。此临时对象仅在块内有效:
try
{
img = &CImg<float>( filename );
}
当执行离开这个范围时它被破坏并且你有一些随机内容的无效指针(例如 _width
字段中的 -858993460
)。