warum funzt malloc nicht?



  • Hi,

    ich plage mich gerade mit einem malloc ab.

    Ich nutze unter linux eclipse, evtl. liegt es da dran 😞

    char* zeile =(char*) malloc(255*(sizeof(char))); <- hier bricht mein prog ab, warum?



  • Warum bricht es ab?
    Schmeiss den Debugger an und sag uns etwas sinnvolles 😉



  • vielleicht weil du nen java-compiler benutzt ?
    oder du mussst <stdlib.h> oder <malloc.h> einbinden.



  • oder du hast am anfang der funktion vorher noch nen funktionsaufruf

    int main()
    {
    funktion();
    char* zeile =(char*) malloc(255*(sizeof(char)));
    }
    

    in dem fall musst du die zeile mit malloc davor schieben



  • mein Code sieht nun so aus:

    #include <cstdlib>
    #include <iostream>
    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <stringprep.h>
    #include <errno.h>
    #include <malloc.h>
    #include <dirent.h> 
    
    using namespace std;
    
    int main(int argc, char argv[] )
    {
    
    	char*   zeile   	=(char*) malloc(255*(sizeof(char)));
            char* LineBuf          	=(char*) malloc(1500*(sizeof(char)));
    

    alles ist eingebunden, der Code ist auf ei Minnimal gekürzt, aber trotzdem bekomme ich einen "Speicherzugriffsfehler".

    Rechte hat das Programm, selbst mit root rechten keine chance.

    das ist doch alles für den A....



  • bis auf die kleinigkeit, das du den cast (char*) vorne und das *sizeof(char) im malloc-argument weglassen kannst, kann ich keinen fehler erkennen. auch mit diesen überlüssigen beigaben^^ sollte das programm nur abstürzen, wenn malloc 0 zurückgibt und der pointer dereferenziert wird.
    🙂



  • // #include <cstdlib> C++ Header
    // #include <iostream> detto
    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    // #include <stringprep.h>
    #include <errno.h>
    // #include <malloc.h> // <stdlib.h> sollte reichen.
    // #include <dirent.h>
    
    // using namespace std; C++ ...
    
    int main( int argc, char argv[ ] ) {
    
        char *zeile    = malloc( 255 );
        char *LineBuf  = malloc( 1500 );
    
        strcpy( zeile, "foo" );
        strcpy( LineBuf, "bar" );
    
        free( zeile );
        free( LineBuf );
    }
    

    works like a charme...

    greetz, Swordfish



  • ich habe so einiges ausprobiert.
    da ist das mit Hengen geblieben.

    dann liegt es wohl wirklich an meinem system.

    vielen Dank



  • Ich denke eher, es liegt an Deinem Code...

    greetz, Swordfish



  • bei

    int main( int argc, char argv[ ] )
    

    müsste es char* argv[] heissen, sonst seh ich da nichts.


Anmelden zum Antworten