2016-11-20 15 views
-1

Ich habe eine Funktion, die eine Matrix in C größer macht. Es funktioniert das erste Mal, wenn Sie es verwenden, aber beim zweiten Mal bekomme ich realloc(): invalid old size. Irgendwelche Ideen, was passieren könnte?Ändern der Größe einer Matrix in C

Hier ist der Code:

int** resize_matrix(int** matrix, long org_size, long size_inc){ 

    long new_size = org_size + size_inc; 
    int** new; 
    int* temp; 

    new = realloc(matrix, new_size*sizeof(int*)); 

    for(long i=0; i<org_size; i++){ 
    //error happens here, when i=0, but only the second time you run it 
    temp = realloc(new[i], new_size*sizeof(int)); 
    new[i] = temp; 
    //clears the added space 
    for(long i2=org_size; i2<new_size; i2++){ 
     new[i][i2] = 0; 
    } 
    } 

    for(long i = org_size; i<new_size; i++){ 
    new[i] = calloc(new_size, sizeof(int)); 
    } 

    return new; 
} 
+0

am Ende sollte es "return new" sagen, ich habe vergessen, es zu ändern lol – e2298

+0

Bitte Code hinzufügen, um zu überprüfen, ob realloc() oder 'calloc()' fehlschlägt (gibt NULL zurück). Bitte zeigen Sie auch, wie Sie diese Funktion aufrufen ... es ist durchaus möglich, dass dort ein Fehler ist. –

+0

@ e2298 Was ist old_size? –

Antwort

0

den Fehler gefunden, es war etwas, nach dem Aufruf, resize_matrix, dass gerade so passiert ist mein Ausgang zur richtigen Zeit zu stoppen, um mich denken resize_matrix war, die es verursacht . Entschuldige, dass du dir Zeit genommen hast.

Verwandte Themen