2d int array mit malloc



  • ok es lässt sich jetz compilieren

    jetz bekomme ich aber einen speicherzugriffsfehler beim ausführen wenn ich

    visited[i][j] = 0;

    mache....aber wie im ersten beispiel zu erkenne wird ja nicht mehr als der bereich der gemalloct wird mit 0 belegt?!



  • kale1990 schrieb:

    int *visited; 
      visited = (int *) malloc(n*sizeof(int));
      for(i=0;i<n;i++) {
        visited[i] = (int *) malloc(n*sizeof(int));  // <-- hier tritt der warning auf
      }
      for(i=0;i<n;i++) {
        for(j=0;j<n;j++) {
           visited[i][j] = 0;            // <-- hier tritt der error auf
        }
      }
    

    versuch es so

    int [u]*[/u]*visited; 
      visited = malloc(n*sizeof(int[u]*[/u]));
      for(i=0;i<n;i++) {
        visited[i] = malloc(n*sizeof(int));
    

    🙂



  • Da fehlen aber noch die Casts (bei malloc) 😉 .



  • CodeFinder schrieb:

    Da fehlen aber noch die Casts (bei malloc) 😉 .

    unsinn, malloc gibt einen 'void*' zurück, das ist ja das gute, da muss man nix casten...



  • Undertaker schrieb:

    CodeFinder schrieb:

    Da fehlen aber noch die Casts (bei malloc) 😉 .

    unsinn, malloc gibt einen 'void*' zurück, das ist ja das gute, da muss man nix casten...

    //gelöscht

    //Edit ok... war wohl doch ernst gemeint... 🙄 😮



  • Undertaker schrieb:

    unsinn, malloc gibt einen 'void*' zurück, das ist ja das gute, da muss man nix casten...

    Hm, muss das in C nicht explizit gecastet werden 🙄 ?!

    q.e.d.:

    error C2440: '=': 'void *' kann nicht in 'int *' konvertiert werden
    Konvertierung von 'void
    ' in Zeiger auf nicht-'void' erfordert eine explizite Typumwandlung
    error C2440: '=': 'void *' kann nicht in 'int ' konvertiert werden
    Konvertierung von 'void
    ' in Zeiger auf nicht-'void' erfordert eine explizite Typumwandlung



  • CodeFinder schrieb:

    Hm, muss das in C nicht explizit gecastet werden 🙄 ?!

    error C2440: '=': 'void *' kann nicht in 'int *' konvertiert werden
    Konvertierung von 'void
    ' in Zeiger auf nicht-'void' erfordert eine explizite Typumwandlung

    errors? du solltest deinen compiler wechseln. welchen hast du, der so spinnt?
    🙂



  • CodeFinder schrieb:

    Undertaker schrieb:

    unsinn, malloc gibt einen 'void*' zurück, das ist ja das gute, da muss man nix casten...

    Hm, muss das in C nicht explizit gecastet werden 🙄 ?!

    q.e.d.:

    error C2440: '=': 'void *' kann nicht in 'int *' konvertiert werden
    Konvertierung von 'void
    ' in Zeiger auf nicht-'void' erfordert eine explizite Typumwandlung
    error C2440: '=': 'void *' kann nicht in 'int ' konvertiert werden
    Konvertierung von 'void
    ' in Zeiger auf nicht-'void' erfordert eine explizite Typumwandlung

    Benutz mal einen C-Compiler für C und keinen C++-Compiler.

    Schön blamiert...



  • Tim schrieb:

    Benutz mal einen C-Compiler für C und keinen C++-Compiler.

    ich könnte ja jetzt.... nein!, ich versprach nicht mehr über ^^ zu lästern 😉



  • Tim schrieb:

    Benutz mal einen C-Compiler für C und keinen C++-Compiler.

    Schön blamiert...

    Nop, da hast Du etwas nicht verstanden, das war eine Frage! Ich programmiere in C++, da wird auf Typen Wert gelegt und es ist (wie man ja sieht) ein Cast notwenig, für C war ich mir nicht sicher!



  • Undertaker schrieb:

    Tim schrieb:

    Benutz mal einen C-Compiler für C und keinen C++-Compiler.

    ich könnte ja jetzt.... nein!, ich versprach nicht mehr über ^^ zu lästern 😉

    Tu was Du nicht lassen kannst - mir ist das egal 😉 .



  • CodeFinder schrieb:

    Tim schrieb:

    Benutz mal einen C-Compiler für C und keinen C++-Compiler.

    Schön blamiert...

    Nop, da hast Du etwas nicht verstanden, das war eine Frage! Ich programmiere in C++, da wird auf Typen Wert gelegt und es ist (wie man ja sieht) ein Cast notwenig, für C war ich mir nicht sicher!

    Dafür war mir in deinen Beiträgen in diesem Thread zuviel "🙄", "q.e.d." und zuwenig "C++".



  • CodeFinder schrieb:

    Tu was Du nicht lassen kannst - mir ist das egal 😉 .

    ich meinte nicht, dass ich über dich lästern wollte, falls du es falsch verstanden hast...
    🙂



  • Naja, Leute ist auch Rille 😉 . Glaub es ist (auch dem Threadersteller) klar, was gemeint ist, also Problem gelößt 🙂 .


Anmelden zum Antworten