[osg-users] image is not being freed

Robert Osfield robert.osfield at gmail.com
Wed Apr 13 01:44:25 PDT 2016


Hi Bruno,

The OSG is capable of robustly handling the memory of all objects that it
handles.  In your case you've disabled this with the NO_DELETE option will
leaves the responsibility to your application to manage the lifetime of the
data.  It may be that you are doing this correctly, but perhaps there the
bug is there.

In the OSG for most objects you don't explicitly delete objects you
unreferenced them and they automatically get deleted if their reference
count goes to zero.  Use of ref_ptr<> is the best way to manage the
reference counting for you.  So you very rarely explicitly delete anything,
and you certainly wouldn't explicitly delete a node in the scene graph -
the destructor is hidden in protected to avoid you doing this as all scene
graph objects are meant to be ref counted.

As for you own application, there isn't much we as third parties without
the code in front of us can say about the exactly problem in your
application.  You should be wary of how you determining a leak, for
instance under Windows the VisualStudio memory leak tool can produce false
positive in certain circumstances.

Robert.

On 13 April 2016 at 09:30, Bruno Oliveira <bruno.manata.oliveira at gmail.com>
wrote:

> OK, I understand that. I do that because I own the data pointer I'm
> sending, and I am totally sure I am freeing it. However, some other copy
> remains anywhere, and I don't have access to it.
>
> If I delete the osg::Group where I am attaching images and re-add the same
> imgaes, no more memory is allocated, so it is using the same buffers
> somehow, but I can't force it to free the memory when I want to
>
> 2016-04-13 7:21 GMT+01:00 Sebastian Messerschmidt <
> sebastian.messerschmidt at gmx.de>:
>
>> Hi Bruno,
>>
>> Hello,
>>
>> I am creating an image from custom data pointer as follows, however, this
>> does not result in freeing my memory after I delete the node and texture.
>> How could this be?
>>
>> image->setImage(src->tileSize(), src->tileSize(),1,
>>                             GL_RGBA8,
>>                             GL_RGBA,
>>                             GL_UNSIGNED_INT_8_8_8_8_REV,
>>                             src->tileGridCoords(col, row).m_data.data(),
>>                             osg::Image::NO_DELETE);
>>
>> You are telling OSG that you handle the memory yourself by stating
>> NO_DELETE.
>> So basically you're responsible to delete it.
>>
>> Cheers
>> Sebastian
>>
>>
>>             // Setup texture
>>             osg::ref_ptr<osg::Texture2D> texture = new osg::Texture2D;
>>             texture->setImage(image.get());
>>
>>             // Avoid background border between tiles
>>             //
>> http://stackoverflow.com/questions/19611745/opengl-black-lines-in-between-tiles
>>             texture->setWrap(osg::Texture::WRAP_S,
>> osg::Texture::CLAMP_TO_EDGE);
>>             texture->setWrap(osg::Texture::WRAP_T,
>> osg::Texture::CLAMP_TO_EDGE);
>>
>>
>> texture->setInternalFormatMode(osg::Texture2D::USE_S3TC_DXT1_COMPRESSION);
>>             texture->setUnRefImageDataAfterApply(
>>
>>
>>
>> _______________________________________________
>> osg-users mailing listosg-users at lists.openscenegraph.orghttp://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>
>>
>>
>> _______________________________________________
>> osg-users mailing list
>> osg-users at lists.openscenegraph.org
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>
>>
>
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20160413/f4d473aa/attachment-0003.htm>


More information about the osg-users mailing list