类中的SDL_Surface指针变为NULL
SDL_Surface pointer withing class becoming NULL
我自己定义的类中的SDL_Surface, Actor,在我加载SDL_Surface后返回NULL。在大量控制台输出并使用GDB查找错误可能在哪里之后。Actor类包含一个指向SDL_Surface的指针,而Actor::getSurface返回指向SDL_Surface的指针。
当然,你相信更多的代码显示将有助于解决问题,我很乐意分享。
我的程序输出是:
--Surface was loaded.
Surface is NULL after loading.
我删掉了代码中不重要的部分。
main.cpp:
SDL_Init( SDL_INIT_EVERYTHING );
Actor sprite;
sprite.loadSurface("images/bg.bmp");
if( sprite.getSurface() == NULL )
std::clog << "Surface is NULL after loading." << std::endl;
Actor.cpp
bool Actor::loadSurface(std::string t_filename)
{
std::clog << "-ACTOR " << m_id << " LOADSURFACE" << std::endl;
SDL_Surface * loadedImage = NULL;
m_surface = NULL;
loadedImage = IMG_Load( t_filename.c_str() );
if( loadedImage != NULL )
{
std::clog << "--Surface was loaded." << std::endl;
m_surface = SDL_DisplayFormatAlpha( loadedImage );
SDL_FreeSurface( loadedImage );
return true;
}
std::clog << "--Surface was not loaded." << std::endl;
return false;
}
您的SDL_DisplayFormatAlpha
返回NULL
。
如果您在尝试转换图像之前没有调用SDL_SetVideoMode
,则可能发生这种情况,请验证这种情况。
另一个会导致NULL
返回值的选项是如果内存耗尽。
相关文章:
- 当使用通配符和null指针调用函数时,对输出的说明
- 当目标指针不是基类的类型时,为什么允许dynamic_cast为多态类生成 null 指针?
- API 返回智能指针的 std::optional 以明确指定指针可能为 null 是否有意义?
- 为什么在C++中增加指针后打印了一个值而不是 NULL/0?
- 指针永远不会在链表深层复制构造函数中达到 null
- 正在将对象指针数组初始化为NULL
- 为什么在C++中使用delete后指针不为NULL
- C++中的指针否定 (!ptr == NULL)
- 如何返回值为NULL的变量指针
- 打印空指针时,std::cout 可以打印 "NULL" 而不是 0 吗?
- 将位数组转换为 HBITMAP 后 bmBits 的 NULL 指针
- C++ 由于类析构函数中的指针设置为 NULL 而导致的内存泄漏
- 如果指针在C++为 NULL 则修改指针
- 在访问类的树层次结构中的对象时避免使用 null 指针
- if(NULL==指针)和if(指针==NULL)之间有什么区别
- 从转储中获取调用堆栈的几乎所有帧中的此指针 NULL 表明什么
- 指针 NULL 在C++中的函数
- 自动指针= NULL错误
- 如何使指针指向指针NULL
- 当我们分配指针 NULL 时会发生什么