Problem mit malloc()



  • Hi ich will in meinem Programm malloc() benutzen also hab ich mir das bsp in der msdn angeschaut das so ausschaut

    /* MALLOC.C: This program allocates memory with
     * malloc, then frees the memory with free.
     */
    
    #include <stdlib.h>         /* For _MAX_PATH definition */
    #include <stdio.h>
    #include <malloc.h>
    
    void main( void )
    {
       char *string;
    
       /* Allocate space for a path name */
       string = malloc( _MAX_PATH );
       if( string == NULL )
          printf( "Insufficient memory available\n" );
       else
       {
          printf( "Memory space allocated for path name\n" );
          free( string );
          printf( "Memory freed\n" );
       }
    }
    

    nun also ab in meine app und genau so probiert

    char *buffer;
    buffer = malloc(2000);

    leider kann ich aber so nicht compilen

    error C2440: '=' : 'void *' kann nicht in 'char *' konvertiert werden

    😕 😕 habs doch auch genau so gemacht 😞

    hoffe mir kann iener was dazu sagen



  • string = (char*)malloc( _MAX_PATH );
    
    // in C++ einfach
    char* string = new char[_MAX_PATH];
    


  • dein Problem ist, dass du ein C Programm versuchst mit einem C++ Compiler zu kompilieren. In C++ wird void* nicht implizit nach T* gecastet, daher musst du ein Cast benutzen, dieser ist aber in C verpöhnt, da er zu Problemen führen kann (such mal per Forensuche danach, dass wurde schon tausend mal erklärt)

    btw.
    kenn ich keinen malloc.h Header und void main ist nicht gut, du solltest lieber int main benutzen!



  • BTW: Wenn du C++ programmierst, solltest du nicht im C-Forum fragen.


Anmelden zum Antworten