I'm having a segmentation fault when I have implemented a dynamic array of pointers to be able to store the contents of a file line-by-line.
size_t file_mem_init(char ***ptr,FILE * file){
size_t mem_size = getnline(file); // retorna a quantidades de linha no arquivo
size_t x;
if(mem_size == 0){
puts("Arquivo vazio");
exit(1);
}
*ptr = malloc(sizeof(**ptr)*mem_size);
if(*ptr == NULL){
perror("malloc in *ptr");
exit(-1);
}
for(x = 0; x < mem_size && !feof(file);x++){
// DEBUG
printf("%zu",x);
// sizeofline(file) retorna a quantidade de caracteres de uma linha no arquivo.
*ptr[x] = malloc(sizeof(***ptr) * sizeofline(file)); <---- Falha de Segmentação
if(*ptr[x]==NULL){
printf("Na variavel *ptr[%zu]: %s",x,strerror(errno));
exit(-1);
}
x++;
}
return mem_size;
}
void file_mem_free(char ***ptr,size_t len){
while(len > 0)
free(*ptr[--len]);
free(*ptr);
}