problème avec delete [] [C++] - C++ - Programmation
Marsh Posté le 08-05-2004 à 17:12:23
entree=sortie; // on met la sortie dans l'entrée
delete [] sortie;
tu crois faire quoi là ? entree est dans le décor
Marsh Posté le 08-05-2004 à 18:23:11
j'ai besoin de changer la taille de sortie, donc je pense qu'il faut le deleter avant non ?
ca marcherait si plutot que de faire entree=sortie, je copiais un à un les éléments de sortie dans entree ?
Marsh Posté le 08-05-2004 à 18:36:30
je sais pas ce que t'as besoin de faire, je vois juste
entree=new double [Rcouche[i]]; // entree va etre de la taille de sortie
entree=sortie; // on met la sortie dans l'entrée
ça fuit comme un seau percé
entree=sortie; // on met la sortie dans l'entrée
delete [] sortie; // on efface sortie, qui va etre de la taille du nombre
corruption mémoire ...
Marsh Posté le 08-05-2004 à 19:15:23
je vais prendre un exemple. On va dire qu'au début, entree est de dimension 5. Le programme va ensuite "transformer" ces entrées et va fournir, par exemple, 4 sorties (donc sortie est de dimension 4)
le truc, c'est que ces sorties vont être les futures entrées pour la couche d'après. Il faut donc que je sauvegarde sortie et que je le mette dans entree. C'est tout ce que je veux faire.
Mais pour ca, il faut bien que entree ait la meme taille que sortie non ? Et ensuite, sortie va devoir etre de dimension 3 (par exemple), donc je redimensionne sortie.
Et si je mettais entree et sortie de taille maximale (la taille maximum qu'ils peuvent prendre) et que je ne les delete pas, tu penses que ca marcherait ?
Marsh Posté le 08-05-2004 à 19:21:57
je te lis pas, je m'intéresse pas à ton algo.
t'as rien bité aux pointeurs
forme toi ou passe à std::vector
Marsh Posté le 08-05-2004 à 19:26:16
j'ai une connaissance assez limitée des pointeurs
merci quand meme
Marsh Posté le 08-05-2004 à 19:30:19
ben alors les utilises pas
tu te rends compte de ce que tu fais quand tu écris
entree=new double [Rcouche[i]];
entree=sortie;
delete [] sortie;
Marsh Posté le 08-05-2004 à 19:46:01
y a pas trop le choix quand meme
dans le code, là, d'abord je déclare que entree a une certaine taille, ensuite je dis que l'adresse mémoire d'entree vaut l'adresse mémoire de sortie, mais la troisieme ligne je sais pas trop comment elle est gérée. Soit ca supprime l'adresse mémoire de sortie, et donc celle d'entree, soit ca fait que supprimer la liaison entre sortie et son adresse mémoire, c'est ca que j'ignore.
Mais vu que ca seg fault pas, j'ai pensé que c'etait la deuxieme solution la bonne
Marsh Posté le 08-05-2004 à 19:58:26
mais tu me parles de quoi là ?
d'abord je déclare que entree a une certaine taille, ensuite je dis que l'adresse mémoire d'entree vaut l'adresse mémoire de sortie
t'es dans l'incompréhension totale, t'es pas cohérent du tout en plus ... pour toi l'affectation à deux sens différents ...
allez utilise std::vector
Marsh Posté le 08-05-2004 à 20:31:45
utiliser std vector sera pas plus simple pour moi
je vais d'abord essayer ce que j'ai mis plus haut, en esperant que ca marche.
Marsh Posté le 08-05-2004 à 20:42:35
ça marchera pas, au mieux, ça fuira. t'es incapable de gérer la mémoire, c'est trop complexe pour toi. utilise std::vector et après, si tu y tiens vraiment, tu pourras retourner aux pointeurs : comme ton algo fonctionne et ne s'occupe pas de la mémoire, ça sera plus facile. concentre toi sur ton algo, tu n'es pas capable de gérer la mémoire, et c'est de toute façon déconseillé de le faire de maniè-re brute
Marsh Posté le 08-05-2004 à 21:24:39
Là suis franchement d'accord avec Taz, j'espère que c'est pour un truc perso qui ne sera jamais divulgué ...
Marsh Posté le 08-05-2004 à 21:48:27
Cricri_ a écrit : Là suis franchement d'accord avec Taz, j'espère que c'est pour un truc perso qui ne sera jamais divulgué ... |
C'est pour le code de PyGTK. Le code est disponible
Marsh Posté le 08-05-2004 à 21:51:42
ReplyMarsh Posté le 08-05-2004 à 22:00:21
Cricri_ a écrit : Là suis franchement d'accord avec Taz, j'espère que c'est pour un truc perso qui ne sera jamais divulgué ... |
bien sûr, c'est perso
j'ai pas la prétention de vouloir faire quelque chose de professionnel, loin de là.
Marsh Posté le 08-05-2004 à 22:01:02
ReplyMarsh Posté le 08-05-2004 à 22:25:28
Library a écrit : bien sûr, c'est perso |
fais quelque chose qui marche
Marsh Posté le 08-05-2004 à 22:36:38
crois bien que c'est là mon seul but
que ce soit optimisé et propre, je m'en fous completement
Marsh Posté le 08-05-2004 à 22:48:35
mais souvent optimisation et propreté sont voisines
et quelque chose qui marche vraiment doit être propre
Marsh Posté le 08-05-2004 à 23:07:51
je veux quelque chose qui marchotte, qui est plus lent que ce que ca devrait etre, moins fonctionnel aussi, mais qui fais ce que je veux.
Marsh Posté le 09-05-2004 à 00:07:12
on a pas la meme conception de la programmation, c'est tout
Marsh Posté le 09-05-2004 à 01:12:05
Library a écrit : on a pas la meme conception de la programmation, c'est tout |
Vaudrait peut etre pas employer ce terme, vu ta conception.
A+,
Marsh Posté le 10-05-2004 à 12:50:44
entree=new double [Rcouche[i]];
entree=sortie;
delete [] sortie;
=> comment se tirer dans le pied en 3 lignes ^^
Marsh Posté le 08-05-2004 à 16:56:07
bonjour à tous
J'ai un petit problème, et je pense que c'est du à delete[]. Je n'ai ni erreur de compilation, ni erreur de segmentation, mais mon programme s'arrete (sans me redonner la main) au milieu d'une boucle. Voici la portion de code qui pose problème :
dans ce code, le probleme est entre le cout << "!" << flush; et le cout << ";" << flush; . Cette portion est exécutée environ 500 fois avant de s'arreter.
Vous auriez une idée de comment corriger ca ?
merci d'avance