PDA

Visualizza la versione completa : [C] Eccezione nell'uso della funzione free()


^EvAmPiReS^
27-02-2011, 19:27
void output_prob_name()
{
char* prob_name = NULL;

if(!(prob_name = (char*)malloc(MAX_LENGTH*sizeof(char))))
error("\nErrore di allocazione del nome del file contenente i dati del problema.\n");

printf("\nInserisci il nome del file contenente i dati del problema: ");
fflush(stdin);

if(!(scanf_s("%s",prob_name,strlen(prob_name))))
error("\nNome del file non valido o troppo lungo.\n");

free(prob_name);

return;
}


Non badate all'inutilitÓ della funzione, sto facendo delle prove.
Vorrei capire perchŔ la free mi spara un'eccezione!
Probabilmente sbaglio ad utilizzare la scanf_s?
Grazie!

shodan
27-02-2011, 19:43
if(!(scanf_s("%s",prob_name,MAX_LENGTH*sizeof(char)-1 )))

^EvAmPiReS^
27-02-2011, 19:49
Grazie, potresti spiegarmi cosa rappresenta il terzo parametro, che non sono riuscito a capirlo dalla documentazione?

shodan
27-02-2011, 20:19
Quanti caratteri intendi leggere o la lunghezza massima della stringa passata come parametro.
Tuttavia il tuo problema dipendeva dal fatto che cercavi di ottenere una lunghezza da un puntatore spazzatura.

Loading