Déclaration dynamique d'un tableau de chaines de caracteres
paulien
Messages postés6Date d'inscriptionlundi 21 avril 2003StatutMembreDernière intervention23 décembre 2006
-
18 mai 2003 à 05:14
m0onracer
Messages postés2Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention 5 décembre 2003
-
5 déc. 2003 à 04:54
Bonjour à tous !
J'essaie de déclarer un tableau de chaines de caractéres dynmiquement, j'ai essayé cette methode, ca ne fonctionne pas, la compilation marche, mais au run time, il y'a une erreur du genre : la memoire ne peut pas etre 'read' ! comme dirais mon prof d'info ! lol
char** Tableau = new char* [SIZE];
Je ne vois absoluement pas l'erreur que j'ai faite, enfin, c les joies de la programmation !!!!
Paulien - La Rochelle - BTS IRIS
A voir également:
Mettre une chaine de caractere dans un tableau en c
cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 20073 18 mai 2003 à 10:37
Entre Rochelais j'aimerais bien t'aider mais la je ne pige pas le blem.
Ce que BruNews t'a répondu ne me semble pas correcte du tout, on peut tout à fait faire comme tu as fais sans allouer à chaque espace mémoire une valeur. C'est bien d'ailleur l'interêt de cette méthode. Dis moi quel est ton compilateur ? Sous quel environnement tu programme ? et enfin quel est la taille de ton SIZE ?
A+.
Bouba
BruNews
Messages postés21041Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 201917 18 mai 2003 à 11:03
salut bouba, comment pas correct ???
Il dit bien "TABLEAU de chaines", si c'est le cas ou sont les tableaux char que chaque ptr va referencer ?
A moins qu'il n'ait calculer SIZE en rapport ...
BruNews, ciao...
BruNews
Messages postés21041Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 201917 18 mai 2003 à 11:25
ben voile, on arrive au meme point, alloc des differents espaces pour chaque string et maintenant oui que va tourner.
et vive La Rochelle.
BruNews, ciao...
Haldwin
Messages postés77Date d'inscriptionlundi 15 avril 2002StatutMembreDernière intervention16 juin 2004 18 mai 2003 à 11:34
Juste un dernier ajout pour expliquer pourkoi tu avais ce message "memoire ne peut etre lue"...
Ce que tu as fait est un tableau de pointeurs de chaine de char de taille SIZE. Or par defaut le compilateur met dans ces adresses memoires une valeur ( par ex: 0xcdcdcdcd) qui est une adresse memoire non lisible. Voila pourquoi tu as cette erreur... En dynamique, trois choses a faire tout le temps:
1/ Allocation de la memoire utile
2/ Initialisation des valeurs de la memoire à NULL dans le cas de pointeurs. (exactement ton cas)
3/ Ne pas oublier de deallouer proprement sans fuite memoire...
Wala,
Bon dev,
<<-- H@ldwin -->>
paulien
Messages postés6Date d'inscriptionlundi 21 avril 2003StatutMembreDernière intervention23 décembre 2006 18 mai 2003 à 19:52
Merci a tous de l'aide que vous m'apportez, le probléme est que je ne peux pas definir de constantes, en effet, la taille du tableau doit etre declaree en dynamique, c une variable calculée, et les chaines sont aussi insérées en dynamique dans le tableau (à l'execution et non a la compilation), en fait, je fais un generateur de pages html, qui contiendra un nombre de photos precisé par l'utilisateur, et l'utilisateur entrera lui même les chaines de caractére pour les commentaires de chaque photo, ensuite, lorsque je construit ma page html, je fais une boucle sur le nombre de photos en affichant a chaque fois le commentaire correspondant a la photo. Voila donc le probleme
Merci
PAulien
BruNews
Messages postés21041Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 201917 18 mai 2003 à 20:08
tu n'es pas oblige d'utiliser des constantes en allocation dynamique. Par contre les new, avis perso, sont valables pour instancier une classe car ils appellent le constructeur mais ici malloc ferait l'affaire en moins de code genere. Si tu vises win32 alors HeapAlloc() sera encore + direct.
BruNews, ciao...