|
全部代码如下:
- class MyEventHandler : public osgGA::GUIEventHandler
- {
- protected:
- osg::ref_ptr<osg::Image> image;
- public:
- virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa)
- {
- switch(ea.getEventType())
- {
- case(osgGA::GUIEventAdapter::KEYDOWN):
- {
- if (ea.getKey() == osgGA::GUIEventAdapter::KEY_Up)
- {
- image = osgDB::readImageFile("dujuan.gif");
- }
- }
- }
- return false;
- }
- };
- int main()
- {
- osg::ref_ptr<osgViewer::Viewer>viewer = new osgViewer::Viewer();
- viewer->addEventHandler(new MyEventHandler);
- viewer->addEventHandler(new osgViewer::WindowSizeHandler);
- viewer->run();
- return 0;
- }
复制代码
这个程序在刚启动的时候内存占用9MB,执行一次KEY_UP后30MB,这都正常。
但是执行一段时间KEY_UP后,内存占用涨到100MB以上了,不理解。
不是有智能指针在管理吗?原来加载的IMAGE应该会因为引用计数变为零而自动卸载。为什么内存还是不断增长呢? |
|