我有一个函数可以增加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 *