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

Répondre à