Bug or no Bug?



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

    On 27/01/2003 at 05:26, xxxxxxxx wrote:

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

    ---------
    Hello,

    I'm not sure if this is a bug or where my mistake is, but the following code (extracted from C4D_MEMORY.H) makes me some headache:

    ------------------------8<--------------------------

      
    void* operator new(size_t s);  
    void* operator new(size_t s,int line,const CHAR *file);  
    void* operator new[](size_t s);  
    void* operator new[](size_t s,int line,const CHAR *file);  
    void operator delete(void *p);  
    void operator delete[](void *p);  
      
    #define gNew new(__LINE__,__FILE__)  
    #define bNew new(__LINE__,__FILE__)  
      
    #define gDelete(v) {if(v) delete v; v=0;}  
    #define bDelete(v) {if(v) delete [] v; v=0;}  
    

    ------------------------>8--------------------------

    bNew is for array allocation, isnt' it? So shouldn't it read:

      
    #define bNew new[](__LINE__,__FILE__)  
    

    And why is there no deallocation operator with positioning arguments, like:

      
    void operator delete(void *p,int line,const CHAR *file);  
    void operator delete[](void *p,int line,const CHAR *file);  
    

    That causes me some trouble, because if the construction of a new object (during "new" operation) failes, the allocated memory won't be deallocated (at least that tells me the VCC docu in compiler warning C4291).

    A second question: You seem to protocol the allocation position and the corresponding deallocations. Is there a way to read/dump out the protocol, to check for memory leakage?

    It would be great if someone could enlighten me. Ciao,
    Marcus



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

    On 27/01/2003 at 13:58, xxxxxxxx wrote:

    The C4291 issue will be fixed in the next API.
    As for bNew I don't know if it's intentional, but new[] and new are both implemented using a simple Alloc() anyway.
    If you create an empty file named "c4d_debug.txt" in the working directory C4D will open its debug console and display memory leaks.



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

    On 27/01/2003 at 22:10, xxxxxxxx wrote:

    I fell into the same trap as you on the new[] thing. Of course "bNew BaseTime[20]" is evaluated to "new BaseTime[20]", and there's no such thing as "new[] BaseTime[20]". So everything is alright.



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

    On 28/01/2003 at 01:11, xxxxxxxx wrote:

    Yeah LOL, you're right. Perhaps I should get more sleep...

    Thanks (especially for the "c4d_debug.txt" info :)),
    Ciao,
    Marcus



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

    On 29/01/2003 at 11:27, xxxxxxxx wrote:

    Hi Mikael,

    today I tried the debug thing but it didn't work. I put an empty text file named "c4d_debug.txt" in the C4D directory (...\MAXON\CINEMA_4D_R8) and startet Cinema -> no debug window. Then I moved this file to the plugin directory -> no debug window. What am I doing wrong here. I even produced some memory leaks, but had no luck.

    It would be really great, if you can help me. I think that this would be a cool feature. Thanks in advance. Ciao,
    Marcus



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

    On 29/01/2003 at 14:45, xxxxxxxx wrote:

    You must make sure that it's in the working directory. So if you start from within Visual Studio the file should go next to the .cdl. (I usually place c4d_debug.txt files all over just to be sure... :-)



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

    On 30/01/2003 at 02:02, xxxxxxxx wrote:

    I tried several things but it didn't work. I put the text file in the ...\bin-directory of Visual Studio C++. I copied it into the Cinema4D-directory and into the plugin folder - next to the .CDL file.

    Where does this window open - in Cinema4D, in an extra application window or in Visual Studio?

    When does this window open - when C4D finds the file, when there are allocations, when I use the VC-debugger or when I compile the plugin in debug configuration?

    BTW: I'm using VC7 .net Standard - might this be the problem?

    Ciao,
    Marcus



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

    On 30/01/2003 at 03:46, xxxxxxxx wrote:

    Try to place the "c4d_debug.txt" file in the C4D directory and then start C4D manually (i.e. by double-clicking the .exe file). Then a separate window named "DebugOut" should open right away saying "C4D Trace Start...". Otherwise I have no idea what's wrong. I'm using 8.012 in Windows, just like you.



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

    On 30/01/2003 at 05:20, xxxxxxxx wrote:

    Hi Mikael,

    thanks a lot for your patience. Now it works. That was the cause: My link to the application had no working directory filled in...
    You made my day :) This is a great feature. I tested it and have new questions, but don't panic, I try them to answer myself at first.

    Ciao,
    Marcus


Log in to reply