OVH Cloud OVH Cloud

Faire confiance au malloc ?

1 réponse
Avatar
gpg
D'après plusieurs messages dans fr.comp.lang.c, il semble possible que
malloc renvoie un pointeur non NULL, et que la zone de mémoire ne soit en
fait ***PAS*** disponible, et ce depuis les kernels 2.4.

a) C'est une blaque ou quoi?

b) Au cas ou ce serait exact, quelqu'un pourrait il m'expliquer comment
s'assurer que le pointeur renvoyé par malloc est valide ?

Avec toutes mes excuses s'il s'agit d'un hoax...

--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.

1 réponse

Avatar
Erwann ABALEA
On 25 Dec 2003, gpg wrote:

D'après plusieurs messages dans fr.comp.lang.c, il semble possible que
malloc renvoie un pointeur non NULL, et que la zone de mémoire ne soit en
fait ***PAS*** disponible, et ce depuis les kernels 2.4.



Comment ça "depuis les kernels 2.4?". Tu devrais relire ta page de man de
malloc(3), la mienne date de 1993, donc bien avant le noyau 2.4 (peut-être
même avant le noyau 1.0, faut voir).

a) C'est une blaque ou quoi?



Non, c'était utile, et ça l'est toujours sur certaines architectures à
mémoire très limitée. Il y a beaucoup de gorets chez les programmeurs.

b) Au cas ou ce serait exact, quelqu'un pourrait il m'expliquer comment
s'assurer que le pointeur renvoyé par malloc est valide ?



Désactiver l'overcommit (c'est déjà le cas par défaut sur un noyau 2.4,
mais tu peux vérifier en faisant un 'cat /proc/sys/vm/overcommit_memory',
une valeur nulle t'assure que tu n'as pas ce comportement).

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
When uncertain, or in doubt, run in circles and scream.

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.