[Algo/C] Grande chaine de caractères pour test d'un algorithme

Grande chaine de caractères pour test d'un algorithme [Algo/C] - C++ - Programmation

Marsh Posté le 16-01-2003 à 03:07:47    

Edit : Hum... Un simple test if ( s == NULL ) ... m'a permis d'être certain que l'allocation a échoué. Je sais honte à moi, j'aurais du le faire dès le départ.. :p
 
 
Bonsoir tout le monde,
 
Ca fait 2 heures que je me bats avec gdb et je pense avoir compris qu'on ne pouvait allouer plus d'une certaine quantité de mémoire d'un coup ?
 
Je m'explique, j'ai voulu faire ceci :
 

Code :
  1. chaine = (char*)malloc( INT_MAX * size(char) );


 
Mais apparement, ca rend la suite du programme instable par la suite : en fait ca plante dès que j'ai un effet de bord, d'ou mon intuition sur l'allocation de la mémoire.  
 
Si je fais une grosse bourde, signalez la moi =)  
 
Si c'est autre chose, votre aide me serait bien utile pour obtenir une enorme chaine de caractère ! Edit 2 : J'ai bien sur pensé à une liste chainée, mais j'aimerais savoir si il y a un autre moyen !
 
Merci et A+


Message édité par Evadream -jbd- le 16-01-2003 à 03:13:01
Reply

Marsh Posté le 16-01-2003 à 03:07:47   

Reply

Marsh Posté le 16-01-2003 à 03:14:33    

En me contentant d'un INT_MAX/10, ca passe !

Reply

Marsh Posté le 16-01-2003 à 08:35:37    

Evadream -jbd- a écrit :


Code :
  1. chaine = (char*)malloc( INT_MAX * size(char) );




 
[:totoz]
 
EUUUHHHHH, tu sais combien de mémoire tu essaye d'allouer là ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 16-01-2003 à 09:13:10    

2 147 483 647  * 8 ce qui me fait environ 16 go à gros coup de louche  C'est vrai que c'est n'importe quoi =D =D
 
Je me demande pourquoi ca passe avec INT_MAX/10 alors :/ Ca swap un peu certes, mais ca va.

Reply

Marsh Posté le 16-01-2003 à 16:30:16    

tu ferais bien de faire plutot plein de malloc de 1Mo pour etre sur qu'il ne soit pas mappé sur un fichier spécial (genre mmap, si ce concept existe sous windows)

Reply

Marsh Posté le 18-01-2003 à 03:51:55    

sizeof(char) vaut 1.
8, c'est le nombre de bits dans un octet classique.
 
Vu que tes pointeurs ont probablement la même taille que les entiers (et quelques autres suppositions), tu essaies d'allouer la moitié de ton espace d'adressage.
Si ton système d'exploitation s'en réserve la moitié pour lui-même, ça passe juste pas.
 
Rien que la moitié, ce serait jouable...


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed