Closed dalilaorbaj closed 1 month ago
Hola! Queria consultar por el ej 17, ya que me esta dando segmentation fault y no logro encontrar el error. Desde ya muchas gracias!
#include <stdio.h> #include <stdlib.h> #include <strings.h> #include "17.h" //opto por arreglo de arreglos, cual matriz, para hacer lo mas eficiente posible la funcion squirrelsInBlock, que seria acceder mediante indice // si tengo un vector que se que no voy a ocupar todas las posiciones, como hago con el manejo de memoria? struct fila{ size_t * columnas; size_t cantCols; }; typedef struct fila * Fila; typedef struct squirrelCensusCDT{ Fila filas; size_t cantFilas; size_t N; }squirrelCensusCDT; squirrelCensusADT newSquirrelCensus(size_t blockSizeMetres){ if(blockSizeMetres == 0){ exit(1); } squirrelCensusADT new = calloc(1, sizeof(squirrelCensusCDT)); new->N = blockSizeMetres; return new; } size_t countSquirrel(squirrelCensusADT squirrel, size_t yDistance, size_t xDistance){ size_t iy = xDistance/squirrel->N; size_t ix = yDistance/squirrel->N; if(squirrel->cantFilas <= ix){ squirrel->filas = realloc(squirrel->filas, (ix+1) * sizeof(struct fila)); for(size_t i=squirrel->cantFilas ; i<=ix ; i++){ squirrel->filas[i].columnas = NULL; squirrel->filas[i].cantCols = 0; //tengo que inicializar todo en cero para no tener basura } squirrel->cantFilas = ix +1; } if(squirrel->filas[ix].cantCols <= iy){ squirrel->filas[ix].columnas = realloc(squirrel->filas[ix].columnas, (iy+1)*sizeof(size_t)); for(size_t i = squirrel->filas[ix].cantCols ; i<=iy ; i++){ squirrel->filas[ix].columnas[i] = 0; } squirrel->filas[ix].cantCols = iy+1; } squirrel->filas[ix].columnas[iy] += 1; return squirrel->filas[ix].columnas[iy]; } size_t squirrelsInBlock(const squirrelCensusADT squirrel, size_t yDistance, size_t xDistance){ size_t iy = xDistance/squirrel->N; size_t ix = yDistance/squirrel->N; if(squirrel->cantFilas <= ix || squirrel->filas[ix].cantCols <= iy){ return 0; } return squirrel->filas[ix].columnas[iy]; } void freeSquirrelCensus(squirrelCensusADT squirrel){ for(int i=0 ; i < squirrel->cantFilas ; i++){ free(squirrel->filas[i].columnas); //free(squirrel->filas[i]); (?) por que esto esta de mas? } free(squirrel->filas); free(squirrel); }
El flag sanitize me tira el siguiente error:
No dije nada, ya lo encontre!
Hola! Queria consultar por el ej 17, ya que me esta dando segmentation fault y no logro encontrar el error. Desde ya muchas gracias!
El flag sanitize me tira el siguiente error: