Как правильно освободить память внутри функции, которая увеличивает строки массива двумерных символов - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть функция, которая увеличивает строки в массиве двумерных символов, в котором есть элементы. Я должен освободить память после использования calloc? Как мне сделать это внутри функции? Я получаю утечки памяти, и я думаю, что это может быть из-за того, что я не использую free.

char **decode_structure;

    void make_row_decode_structure_bigger(int rows){
        //printf("inside the making the rows bigger \n");
        int max_rows = rows+1;

        char **store = realloc( decode_structure, sizeof *decode_structure * (rows + 1) );
        //printf("after a store has been assigned\n");  
        if (store){ 
            decode_structure = store;
            for(size_t i = 0; i < 1; i++ ){

                decode_structure[rows + i] = calloc(15, sizeof(char));
                decode_structure[rows + i][0] = '\0';
            }
        }
        //printf("end of making the rows increase\n");
        return;

    }
//in main()
decode_structure = (char**)calloc( 2, sizeof(char*) );


        for(size_t i = 0; i < 2; i++){
        decode_structure[i] = calloc(15, sizeof(char));
        decode_structure[i][0] = '\0';
        }

вот сообщение об ошибке, которое появилось:

* Ошибка в `./prog ': free (): поврежденные несортированные чанки: 0x0000000001937010 *

...