Salut à tous,Je fais un petit programme censé tester un point précis de la gestion de la mémoire sous Linux. J'essaie de déclencher des segfault en écrivant ds la mémoire octet par octet à partir d'un endroit que j'ai alloué.
Comme il me semble qu'une page fait généralement 4ko sous mon os préféré. Le nombre d'octets au bout duquel j'obtiens une segfault ne devrait jamais dépasser 4096, non ? (voire 8192 avec des pages de 8ko).
Or le nombre est bcp plus gd que ça : 137400. Soit j'ai fait une connerie ds les 15 lignes que j'ai écrites (honte sur moi) soit je comprends plus...
********************** #include <signal.h> #include <stdio.h> #include <stdlib.h> #define ALLOC_SIZE 10 int j; void catch_segfault(int num) { printf("segfault attrapée : j = %d\n",j); exit(0); } int main(void) { int i; signal(SIGSEGV,catch_segfault); char *t= (char*) malloc(ALLOC_SIZE*sizeof(char)); j=0; while(1) { t[j]='\0'; j++; } return 0; } **********************Y a-t-il un moyen de connaitre la taille des pages que le noyau en cours d'utilisation va utiliser ? (quelque part dans /proc j'imagine).
D'avance merci. -- Baptiste <Batmat> Mathus Baptiste at Mathus point org http://www.batmat.net OpenPGP : 0xE8EC628F --------- Si chacun de nous a une idée et que nous les partageons, nous repartirons tous les deux avec deux idées... C'est ça le Libre.
Attachment:
signature.asc
Description: OpenPGP digital signature