如何在释放2D char数组行的函数中正确释放内存

时间:2019-04-07 22:10:07

标签: c realloc

我有一个函数可以增加2D char数组的行,该数组中确实包含元素。使用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 *

0 个答案:

没有答案