*** glibc detected *** free() oO - C++ - Programmation
Marsh Posté le 28-01-2006 à 19:28:49
t'arrêtes de nous spammer ? t'as qu'à filer du Code C++ compilable et arrêter d'appeler 2x ta fonction.
Marsh Posté le 28-01-2006 à 19:44:47
oui désolé, le précédent post c'était une erreur de ma part (j'ai supprimé le post)
le code compilable en le réduisant j'arrive a 398 ligne oO
je le post sur pastebin pour eviter de trop polluer ici
http://pastebin.com/527647
Marsh Posté le 28-01-2006 à 19:49:53
bon ben c'est pas la peine qu'on te réponde si tu supprimes tes posts. et en plus tu nous colles pas le code directement. comment veux-tu qu'on ait envie de t'aider vu comment tu ne respectes pas la charte ?
EDIT: et si tu nous file tes 400 lignes à compiler, c'est que tu te fiches de nous. Trouve le code incriminé et soumet un bout de code de moins de 50 lignes.
Marsh Posté le 28-01-2006 à 19:52:38
et dégage tes typedef ou fais du C, choisi.
EDIT: et vire tes char*/char[], n'utilise que string.
Marsh Posté le 28-01-2006 à 19:53:42
ReplyMarsh Posté le 28-01-2006 à 19:56:13
par charité chrétienne :
Code :
|
tu crois vraiment réserver quoi que ce soit là ?
Marsh Posté le 28-01-2006 à 19:57:35
j'aimerai bien pouvoir faire un beau code sans typedef, avec constructeur etc... mais je ne peux pas, c'est un TP et ce TP va être soumis a une correction semi-automatique (une appli que mon prof a developper) et pour que son appli fonctionne il faut que je respecte le squelette qu'il nous a filé (déclaration des type avec typedef, nom des procédure et fonction...) de plus je suis limité (par exemple: je ne peux pas utiliser de fonction toutes faites comme strstr() ou encore utiliser la STL etc...)
Marsh Posté le 28-01-2006 à 19:59:35
Taz a écrit : par charité chrétienne :
|
non, pas dans mon cas, mais c'est un commentaire généraliste en gros lorsque l'on initialise un pointeur avec new on lui reserve sa place en mémoire
dans mon TP il m'est demandé d'initialiser la variable passé en paramétre de sorte qu'elle contienne 0 article et pas de tableau dynamique
Marsh Posté le 28-01-2006 à 20:00:17
MAIS VIRE CES TYPEDEF ÇA SERT À RIEN PUTAIN !
et string tu crois que c'est quoi ? c'est STL.
Marsh Posté le 28-01-2006 à 20:04:31
Taz a écrit : MAIS VIRE CES TYPEDEF ÇA SERT À RIEN PUTAIN ! |
mais putain je sais mais j'ai pas le droit de les virer et pour string c'est une exception
Marsh Posté le 28-01-2006 à 20:06:01
bah alors utilise string partout. vire tes char * ! mieux dis à ton prof que les typedef ça sert à rien.
Marsh Posté le 28-01-2006 à 20:09:34
Code :
|
Tu initialise liste.liste a zero (->initialiserDyn)
et dans ajouterArticleDyn tu n'alloue pas de memoire pour stocker un element supplementaire!
Marsh Posté le 28-01-2006 à 20:10:23
pour mettre des string partout j'ai pas le droit là encore car je dois utiliser les chaine de caractère de C c'est pour ça qu'il y a un moment je convertis un string en char *
Marsh Posté le 28-01-2006 à 20:13:51
breizhbugs a écrit :
|
ah ben oui quel con j'avais pas vu,
si je fais ça dans mon else :
liste.liste=new Article[liste.nbArticles];
c'est correct ?
Marsh Posté le 28-01-2006 à 20:14:23
utilise malloc/free à la place de new/delete et poste en cat C, ça évitera que Taz se mange un AVC à chacun de tes posts
Marsh Posté le 28-01-2006 à 20:16:54
et pour :
Code :
|
il n'y a pas une autre facon de l'écrire car je trouve que ca fais laid, non ?
(je peux pas l'ecrire comme ça liste.liste[liste.nbArticles-1]=article; )
Marsh Posté le 28-01-2006 à 20:17:40
masklinn a écrit : utilise malloc/free à la place de new/delete et poste en cat C, ça évitera que Taz se mange un AVC à chacun de tes posts |
obligé d'utiliser new et delete
Marsh Posté le 28-01-2006 à 20:21:26
ReplyMarsh Posté le 28-01-2006 à 20:26:55
Code :
|
ultra ptdr. tu peux y aller avec ta conversion
Marsh Posté le 28-01-2006 à 20:28:07
blastman a écrit : ah ben oui quel con j'avais pas vu, |
Euh si tu veux perdre tous les elements deja presents dans le tableau, c'est ce qu'il faut faire!
Dis donc le but de ton TP c'est pas de faire un structure/classe "liste"?
Parce que une liste programmée avec un tableau c'est pas top, surtout de la facon dont tu t'y prends!
Fais une liste chainée t'aura moins de probleme!
Marsh Posté le 28-01-2006 à 20:37:43
non ce qu'il faut faire c'est exactement comme j'ai fais, le but c'est de nous faire réflechir a l'algorithme de nos procédure/fonction pas au codage (enfin j'éspère).
et pas la possibilité d'utiliser une liste chainée car les structure mon été donné tel quel et je dois me demmerder avec ca sans y toucher
Marsh Posté le 28-01-2006 à 20:38:44
c'est ton prof qui te l'a donné cette fonction cpStringAChar ?
Marsh Posté le 28-01-2006 à 20:40:29
ReplyMarsh Posté le 28-01-2006 à 20:46:36
c'est possible je l'ai faites vite fais y a un bout de temps, faut que je regarde, mais bon c'est pas forcément evident de coder un truc propre et efficace en étant aussi limité.
Marsh Posté le 28-01-2006 à 20:48:06
qui te parle de propreté ou d'efficacité ? ta fonction elle marche pas. au mieux elle te fait un bufferoverflow chanceux, au pire c'est direct le segfault.
Marsh Posté le 28-01-2006 à 20:53:12
tu parle de celle là ? oO
void cpStringAChar(string s, char titre[])
{
for (int i=0; i<tailleMaxTitre; i++)
titre[i]=s[i];
titre[s.length()]='\0';
}
Marsh Posté le 28-01-2006 à 20:55:34
tue ton prof, ou demande qu'on le vire. C'est un incapable doublé d'un crétin
Marsh Posté le 28-01-2006 à 20:57:52
Taz a écrit : toujours aussi pourrie. pire en fait |
ca fonctionne c'est sur, mais comment veux tu que je fasse un truc correct en etant aussi limité
Marsh Posté le 28-01-2006 à 21:10:53
en te documentant. si ton truc fonctionne, c'est par effet de bord. sinon c'est tout à fait invalide.
Marsh Posté le 28-01-2006 à 21:35:16
j'avais bien trouvé des trucs mais j'en ai PAS le droit
Marsh Posté le 28-01-2006 à 21:39:50
blastman> juste 2 trucs, ne compte pas sur un '\0' dans un objet String comme pour une chaîne en C.. et n'as-tu pas le droit d'utiliser c_str ?
Marsh Posté le 28-01-2006 à 21:41:33
non
dans mon TP il m'est demandé d'initialiser la variable passé en paramétre de sorte qu'elle contienne 0 article et pas de tableau dynamique
que veut il bien dire par "et pas de tableau dynamique"
Code :
|
Marsh Posté le 28-01-2006 à 22:19:18
bein je sais pas, je suppose qu'il ne veut pas que ta liste soit réallouée en fonction du nombre d'article qu'il y a dedans ? que ce soit comme avec la version allouée statiquement ? mais c'est con, tu perds tout l'intérêt de la version allouée dynamiquement. donc tu lui mets un liste.liste=new Article[nbMaxArticles];
enfin je suppose hein
Marsh Posté le 28-01-2006 à 22:44:17
Moi,
je serais curieux de voir l'intitulé exact du TP, parce que de tout temps je n'ai jamais vu d'enoncer correctement exprimé...
Marsh Posté le 28-01-2006 à 19:24:15
bonjour tout le monde
J'ai un petit problème pour apparement détruire un tableau alloué dynamiquement :
structure
initialisation
destruction
donc voilà lorsque je fais appel à la fonction viderDyn() le programme s'arrete et me met une erreur :
j'ai essayé de le debugger avec gdb, il me met bien une erreur mais j'arrive pas à la comprendre :
Est ce une erreur de mon OS ou de mon prog, si quelqu'un peut m'aider ce serait sympa...
Message édité par blastman le 28-01-2006 à 19:25:37
---------------
http://www.blastmanu.info