speicherprob bei realloc



  • hi han da n prob wenn cih was realloce und hab um ehrlich zu sein ka warum das auftritt 😕
    falls mir einer weiterhelfen könnte wärs goil...
    also das prog läuft als zum kurz vorm ende des zweiten durchganzs stürzt also an der stelle "*pointer[outer][inner] = 0;" ab

    #include <stdio.h>
    #include <stdlib.h>
    
    int resizer(int*** pointer, int outer, int inner, int outerSize, int innerSize, int isNFirst);
    
    int main(){
        int counter = 0;
        int counter2 = 0;
        int** intP = NULL;
        while(counter < 50){
            if(counter2 == 10){
                counter = counter + 1;
                counter2 = 0;
            }
            resizer(&intP, counter, counter2, 0, 0, 0);
            counter2 = counter2 + 1;
        }
        return 0;
    }
    
    int resizer(int*** pointer, int outer, int inner, int outerSize, int innerSize, int isNFirst){
        int** tmpIntP = NULL;
        int* tmpInt = NULL;
        int tmpCoutner = 0;
        if( outerSize != outer + 1 ){
            tmpIntP = (int**)realloc(*pointer, (sizeof(int*) * (outer + 1)));
            if( tmpIntP == NULL ){
                return 1;
            }
            if( outer != 0 ){
                tmpIntP[outer] = NULL;
            }
            *pointer = tmpIntP;
        }
        if( isNFirst == 0 || innerSize < inner + 1){
            if( outer != 0){
            }
            *pointer[outer] = NULL;
        }
        if( innerSize != inner + 1){
            tmpInt = (int*)realloc(*pointer[outer], (sizeof(int) * (inner + 1)));
            if( tmpInt == NULL ){
                return 1;
            }
            *pointer[outer] = tmpInt;
        }
        *pointer[outer][inner] = 0;
        return 0;
    }
    

    hab ich da irgendwo n fehler in meiner logik oder is das einfach nur wirres verhalten



  • ...
    if( outer != 0){
            }
            *pointer[outer] = NULL;
    

    ...
    das sieht schon mal verdächtig aus. das 'if' bewirkt hier nix.
    🙂



  • hmm ne das is nix han den code nur sagen wir mal von debug ausgaben befreit und das war so eine 😛

    also einfach ignorieren das ... ah so und auch bitte nit drauf achten das da n memory leak is... das is momentan irelevant...

    würd das oben aj ändern aba han verpeilt micha nzumelden o_O



  • dann lass es mal im debugger laufen. single-step, variablen angucken, usw.
    🙂



  • Und bitte beim nächsten Mal die deutsche Sprache nicht zu stark vergewaltigen 😉



  • soweit war ich leider schon sowohl mit ddd drüber egschaut als auch mit valgrind.. aba nicht gutes rausbekommen... han gehofft jemand anderem fällt am was auf 😕



  • flasche schrieb:

    soweit war ich leider schon sowohl mit ddd drüber egschaut als auch mit valgrind.. aba nicht gutes rausbekommen...

    du kennst doch die logik von dem code da^^
    wenn du schrittweise durchsteppst und irgendwas nicht deinen erwartungen entspricht, dann hst du einen fehler gefunden. das ist nicht so schwer.
    🙂


Anmelden zum Antworten