Hola,
me da este error:
error for object 0x7ff75ac027d8: pointer being freed was not allocated
* set a breakpoint in malloc_error_break to debug
El caso es que yo creo que es por culpa de esta matriz para la que reservo memoria:
int **matriz;
matriz = (int **) malloc(n * sizeof(int *));
for (i = 0; i < n; i++) {
matriz[i] = (int *) malloc(n * sizeof(int *));
}
pero hago un free(matriz);
y no se por qué me sigue dando ese error.
Solo me da el error en mi Mac, pero si lo ejecuto en ubuntu no.
Gracias!
Cuando asignes memoria comprueba siempre que se ha logrado porque podría ser que mallo falle y free no encuentre tal asignación.
También puede ser que durante el transcurso del programa hayas reasignado matriz a otra cosa.
De todas formas, no lo sé pues no he visto el código completo, antes de liberar matriz debes liberar el resto de elementos que lo componen.
Sigo:
En el segundo mallo, en que asignas memoria para los elementos de matriz, cuando das el tamaño del sizeof debe ser un int, no un int *
Además en C, a diferencia de C++, no necesitas hacer el casting al dato devuelto por malloc, C ya lo infiere del contexto.