problème de mémoire lors de la réinitialisation

Brieuc Jeunhomme bbp at via.ecp.fr
Fri Apr 20 01:27:37 CEST 2001


>    Sous Linux malloc fonctionne toujours, même avec des setrlimit
> partout. S'il renvoie NULL c'est que le tas est corrompu.

Bon, j'ai quand même essayé. J'ai fait tourner les deux programmes
suivants :

bbp at obelix /tmp 0% cat a.c
#include <sys/time.h>
#include <sys/resource.h>
#include <stdio.h>
#include <stdlib.h>

int main ()
{
  struct rlimit a;
  a.rlim_cur=1000;
  a.rlim_max=1000;
  setrlimit(RLIMIT_DATA,&a);
  setrlimit(RLIMIT_STACK,&a);
  setrlimit(RLIMIT_MEMLOCK,&a);
  setrlimit(RLIMIT_AS,&a);
  printf("%p\n",malloc(2000000));
  return 0;
}
bbp at obelix /tmp 0% ./a 
(nil)
bbp at obelix /tmp 0% cat b.c
#include <stdio.h>

int main()
{
  printf("%p\n",malloc(2000000));
  return 0;
}
bbp at obelix /tmp 0% ./b
0x40132008

Donc, ben malloc renvoie parfois NULL et mon hypothèse tient la route,
même si il reste effectivement possible que le problème vienne d'une
corruption du tas.

-- 
BBP




More information about the vlcs-devel mailing list