|
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 unique_ptr |
Message cité 1 fois Message édité par Joel F le 20-11-2009 à 11:44:33 |
Joel F Real men use unique_ptr |
|
Vel-Ryphon |
--------------- http://www.ryphon-mechanics.com |
Joel F Real men use unique_ptr |
Vel-Ryphon |
--------------- http://www.ryphon-mechanics.com |
![]() Publicité | Posté le 20-11-2009 à 16:06:57 ![]() ![]() |
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 unique_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.
|
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 unique_ptr | elle fonctionnera si tu utilises std::copy ... car elle se charge de faire ça
|
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 unique_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 |
Lavock | Erf, et on bazarde pas des données en écrasant un tableau dynamique comme ça ? |
Joel F Real men use unique_ptr | euh non, lis la doc de delete[] |
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[] |