Bonjour,
je suis en train de développer une bibliothèque de gestion sécurisée de la mémoire et j'aimerai comprendre quelques comportements des fonctions d'allocation dans des cas extrêmes :
Réserve 0 octet à une adresse valide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part malloc (0);
Renvoi NULL. Il doit sagir d'un comportement indéfini puisque le paramètre de malloc est de type size_t (entier non signé) donc risque d'integer overflow.
Code : Sélectionner tout - Visualiser dans une fenêtre à part malloc (-1);
On retrouve bien un comportement identique à malloc
Code : Sélectionner tout - Visualiser dans une fenêtre à part realloc (NULL, 0);
Par contre avec p valide :
Renvoi NULL et p semble toujours valide. Alors pourquoi le comportement n'est pas le même qu'avec malloc : renvoyer p valide avec 0 octet de réversé?
Code : Sélectionner tout - Visualiser dans une fenêtre à part realloc (p, 0);
Alors qu'est ce qui est normal et qu'est ce qu'il vaut mieux éviter?
Comme il s'agit sûrement de comportements indéfinis, voici ma configuration si vous souhaitez tester :
- Windows XP Pro
- Code::Blocks
- Mingw livré avec Code::Blocks
Merci d'avoir suivi jusqu'à là![]()
Partager