Quelqu'un peut-il m'expliquer pourquoi libérer deux fois de suite provoque un plantage, mais en libérant un premier, puis b, puis un autre ne plante pas?Double Free - crash ou pas crash
Je sais qu'un libre va insérer le segment de mémoire dans une liste libre double liée. Libérer deux fois insérerait le même morceau deux fois dans la liste libre. Mais pourquoi l'accident se produit-il?
int *a = malloc(8);
int *b = malloc(8);
free(a);
// free(a); //Would crash!
free(b);
free(a); //No crash
Infosec n'est probablement pas le forum le plus approprié pour cette question. Envisagez StackOverflow. –
Pourquoi devrait-il toujours tomber en panne? Même 'int a [5]; a [10] = 100; 'ne plante pas toujours. – immibis
Apprenez ce qu'est _undefined_ behaviour_ is. Vous finirez par le rencontrer plus d'une fois. – Olaf