Ce site n'est pas pebkac.fr. Je publie ici la liste des PEBKAC que j'ai pu sauvegarder, en attendant que le vrai site soit remis en ligne.

PEBKAC #6347 – danarmk

En cours d’informatique en classe prépa, on nous apprend à écrire ce genre de code (ici une procédure supprimant une occurrence d’un élément dans une liste chaînée, s’il en existe) :

type  
    Liste = ^Cellule;
    Cellule = record
        tete: integer; 
        queue: Liste;   
        end;

procedure del(e:integer; l:Liste);
begin
 if l <> nil then
  if l^.queue <> nil then 
   if l^.queue^.tete = e then
    l^queue = l^.queue^.queue
   else
    del(e,l^.queue);
end;


Ce code génère une fuite de mémoire manifeste, car la mémoire utilisée par l’élément supprimé n’est pas libérée. Anticipant la remarque, le professeur nous lance : « Si on voulait bien faire, il faudrait libérer la mémoire que prenait l’élément supprimé. Mais aujourd’hui, les ordinateurs ont tout de même beaucoup de mémoire, donc ça n’est pas nécessaire ».

Certes, les ordinateurs ont peut-être beaucoup de mémoire, mais si le programme en question est destiné a tourner plusieurs mois sans interruption, il aura toujours assez de mémoire, l’ordinateur ? PEBKAC.