pb de memoire (je crois)...

pb de memoire (je crois)... - C++ - Programmation

Marsh Posté le 17-03-2005 à 16:43:44    

Voila j'ai un problème bizare : je travaille sur un fichier texte pour faire un certain traitement mais lorqu'il y a trops d'elements dans le fichier texte (15 mots en l'occurence) j'ai une segmentation fault!
En fait dans ce programme je reserve de multiples fois de la place pour des tableaux de chaine en faisant :  
         tabTemp[i]=(char *)malloc(sizeof(char[27]));
et je declare aussi des tableaux qui ont plusieurs milliers d'elements !
 
Le truc est que ma segmentation fault intervient a un endroit tres bizare du code et j'essaye de debugger depuis un bon moment deja mais je n'arrive  vraiment pas a comprendre ! Je me demandais si ca pouvait venir d'un probleme de memoire (par ex si je reserve de la palce pour une string que j'ai besoin de conserver et si longtemp apre je rereserve de la place est-ce que le programme peut ecraser une valeur dont je me resers apres ?  :bounce:

Reply

Marsh Posté le 17-03-2005 à 16:43:44   

Reply

Marsh Posté le 17-03-2005 à 16:49:36    

Ah oui j'ai oublie de poser une autre question :  
- A un moment du programme je declare un tableau de chaines de caracteres et je fais ceci directement pour pouvoir le remplir :
    for(int i=0;i<WINDOWS_SIZE-1;i++)
      tabTemp[i]=(char *)malloc(sizeof(char[27]));

Cela fonctionne car j'arrive a ecrire dans le tableau ! Cependant, quand je veux reecrire pour la 7eme fois dans une des case du tableau, le programme lance une segmentation fault (il faut ke je remette la boucle a chaque fois que je vais remplir mon tableau du coup et ca marche mais j'orai aime savoir pourquoi j'etais limité a 7 reecriture??)

Reply

Marsh Posté le 17-03-2005 à 16:49:59    

#include <string>
#include <vector>
using namespace std;
 
std::vector<std::string> v(N);

Reply

Marsh Posté le 17-03-2005 à 16:58:22    

euh...
je comprends pas bien la Taz...
J'ai compris que tu me conseiller d'utiliser la classe string mais je vois pas ce que ca av changer (et je comprends pas bien ta syntaxe la ! c comme ca qu'on declare un tableau de string ?)

Reply

Marsh Posté le 17-03-2005 à 17:00:13    

Il te dit juste que tu dois utiliser la STL au lieu de t'emmerder avec un tableau de char * et des malloc.


Message édité par CMk le 17-03-2005 à 17:00:32
Reply

Marsh Posté le 17-03-2005 à 17:18:26    

OK bon ben merci pour vos réponses.
Malheureusement je ne peux pas passé tout mon projet avec des string (pas pour le moment du moins) car il y a presque 1000 lignes de code et au moins la moitié concernent les chaînes de caractères !
Je ferait peut etre ca plus tard !

Reply

Marsh Posté le 17-03-2005 à 17:25:41    

WINDOWS_SIZE = ?  
t'as testé sa valeur ?
 
 
 

Reply

Marsh Posté le 17-03-2005 à 17:58:42    

C'est justement windows_size le probleme !
Le seul moyen moyen que j'ai trouve pour ne plus avoir de segmentation fault c'est d'augmenter la taille de windows_size !
(en fait si windows_size+x est inferieur au nombre de mots alors il y a une segmentation fault mais je comprends vraiment pas pourquoi !) :??:

Reply

Marsh Posté le 17-03-2005 à 17:59:48    

Kineas a écrit :

OK bon ben merci pour vos réponses.
Malheureusement je ne peux pas passé tout mon projet avec des string (pas pour le moment du moins) car il y a presque 1000 lignes de code et au moins la moitié concernent les chaînes de caractères !
Je ferait peut etre ca plus tard !


vu que tu pédales sur un pauvre malloc, malloc qui alloue une taille statique, j'ai du mal à imaginer la tronche des tes 1000 lignes. Reprends tout, ou prend un cours de C++

Reply

Marsh Posté le 17-03-2005 à 19:03:28    

malloc, c'est pas du C ?


---------------
http://www.blastmanu.info
Reply

Marsh Posté le 17-03-2005 à 19:03:28   

Reply

Marsh Posté le 18-03-2005 à 09:32:36    

oui

Reply

Sujets relatifs:

Leave a Replay

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