| |||||
| Bas de page | |
|---|---|
| Auteur | Sujet : [C++] classe array 1d et delete[] |
Publicité | Posté le 20-11-2009 à 09:30:44 ![]() ![]()
|
Un Programmeur | 1/ Pourquoi ne pas utiliser vector?
--------------- The truth is rarely pure and never simple (Oscar Wilde) |
Vel-Ryphon | Il est vrai que j'aurai pu utiliser vector, mais pour plusieurs raisons j'ai préféré codé ma propre classe.
--------------- http://www.ryphon-mechanics.com |
Vel-Ryphon | Si je remplace memcpy par une boucle qui copie les éléments 1 par 1, ça fonctionne :
--------------- http://www.ryphon-mechanics.com |
chewif | *memcpy copie des tas d octets
Message cité 1 fois Message édité par chewif le 20-11-2009 à 10:23:43 |
Joel F Real men use shared_ptr |
Message cité 1 fois Message édité par Joel F le 20-11-2009 à 11:44:33 --------------- MetaScale | Mes cartes Magic |
Joel F Real men use shared_ptr |
--------------- MetaScale | Mes cartes Magic |
Vel-Ryphon |
--------------- http://www.ryphon-mechanics.com |
Joel F Real men use shared_ptr | sauf que la c'est contre-productif mais c'est pas grave ...
--------------- MetaScale | Mes cartes Magic |
Vel-Ryphon |
--------------- http://www.ryphon-mechanics.com |
Un Programmeur | Le probleme que je vois -- encore plus que de perdre ton temps a reinventer la roue -- c'est que tu sautes les etapes. Ecrire des templates mais ne pas comprendre directement quel est le fond du probleme quand on t'indique que tu n'utilises pas les constructeurs de copie, indique pour moi que tu ne maitrises pas encore les bases. Ecrire des templates -- reinventant la roue ou non -- est premature. --------------- The truth is rarely pure and never simple (Oscar Wilde) |
Vel-Ryphon | Toujours est-il que je ne comprends pas pourquoi le memcpy pose problème, puisqu'à partir du moment où mon array est alloué avec un new[], la mémoire est forcément contigue, et de ce fait le delete[] ferait son office correctement... --------------- http://www.ryphon-mechanics.com |
Joel F Real men use shared_ptr | non. Si tu fais un tableau d'objet, ca copie doit copier les objets en appelant leur constructeur de copie qui peuvent avoir des effets de bords. Si tu copie des objets bits à bits, tu t'expose à de sacrée deconvenue.
--------------- MetaScale | Mes cartes Magic |
Vel-Ryphon | D'accord, c'est plus clair maintenant. Merci pour ces explications, et dommage que l'optimisation que le memcpy m'aurait apportée ne fonctionne pas --------------- http://www.ryphon-mechanics.com |
Joel F Real men use shared_ptr | elle fonctionnera si tu utilises std::copy ... car elle se charge de faire ça
--------------- MetaScale | Mes cartes Magic |
Lavock | Hum, je dirai qu'en plus, c'est pas du C que tu fais, mais du C++. Un tableau alloué par new "contient" des information caché (bon c'est pas vraiment lui qui les as), qui fait que tu n'as pas a faire de Delete[n] mais juste un Delete[]. Je pense que dans ton cas il cherche désespérément à desalloué le tout premier tableau que tu as fais... |
Joel F Real men use shared_ptr | non delete[] est la forme correcte pr la desallocation d'un tableau alloué par new ... Message édité par Joel F le 20-11-2009 à 20:16:23 --------------- MetaScale | Mes cartes Magic |
Lavock | Erf, et on bazarde pas des données en écrasant un tableau dynamique comme ça ? |
Joel F Real men use shared_ptr |
Publicité | Posté le ![]() ![]()
|
| Sujets relatifs | |
|---|---|
| [C++] Map statique dans une classe | addition de caracteres en C ... |
| [Architecture] Utiliser une classe en dev / test et une autre en prod | [C] [resolu] lecture matrice alloué dynamiquement |
| {C++} Tableau de structure | [C/C++] Coût d'une allocation mémoire |
| [C#] Héritage de Template (généric) | programmation wifi linux en C |
| Notation romaine décroissante en langage C | |
| Plus de sujets relatifs à : [C++] classe array 1d et delete[] | |





