[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[HS] Question système



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


Reply to: