general question about Free();



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 09/05/2009 at 12:24, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   r11 
    Platform:   Windows  ;   
    Language(s) :     C++  ;

    ---------
    Hi there, i just like to know where, why and in which case i should need Free(); or GeFree(); What exactly happens if i dont use it, for example within an objectplugin? I am using this:
    Vector *pnrm = ToPoly(res)->CreatePhongNormals(); and the manual tells to use GeFree();

    Is it a question of filling up the memory with unneccessary data??

    thanks for clarifying :)



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 09/05/2009 at 12:34, xxxxxxxx wrote:

    Hi, with GeAlloc you allocate a range of memory which is available until you call GeFree. If you dont free allocated memory it is a memory leak becaue you wasted memory until you end the app. (your OS will clear the range). So if the documentation tells you to use GeFree - do it, otherwise you get problems (or your customer).

    Look for "malloc and free" which is a C command and is similar to GeAlloc and GeFree (or maybe they are exactly the same, they just redirect the command).

    In your case..

    > <code>
    > Vector *pnrm = ToPoly(res)->CreatePhongNormals();
    > /* do what you want */
    > GeFree(pnrm);
    > </code>

    Its similar to gNew and gDelete. So just pair these commands and you will get no problems.

    bye, shawni

    edit: See "Debug information" in the C++ SDK Documentation with information how to detect memoryleaks.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 09/05/2009 at 13:03, xxxxxxxx wrote:

    And keep in mind 'ownership'. If you allocate an object and insert into a document:

    BaseObject* obj = BaseObject::Alloc(Ocube);
    if (obj) doc->InsertObject(obj, NULL, NULL, FALSE);

    Then doc now handles freeing the object and you shouldn't attempt to free it yourself. To free it yourself, you must remove it from the document list:

    obj->Remove();
    BaseObject::Free(obj);
    obj = NULL;



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 09/05/2009 at 14:18, xxxxxxxx wrote:

    thanks! i guess i'll have to add some of those now ;)


Log in to reply