2010-06-09 6 views
1

J'ai actuellement un problème étrange avec un programme segfaulting mais je ne suis pas capable de détecter l'erreur. Je pense que le problème se résume à ceci.C++: Copie vers un pointeur dereferencé

struct S {int a; vector<sometype> b;} 
S s1; 
// fill stuff into a and b 
S* s2 = new S(); 
*s2 = s1; 

Est-il possible que la copie finale soit illégale d'une manière ou d'une autre? Im vraiment confus en ce moment ... Merci

+1

Pouvez-vous expliquer ce que vous essayez d'atteindre en faisant cela. – ckv

+0

oui Daniel, je dois retravailler certains mal conçu lib :( – bbb

+0

Désolé pour la suppression de commentaires.Je disais que le code est moche, mais incomplet –

Répondre

2

Vous obtiendrez ce comportement si sometype a un bogue dans son constructeur de copie défini par l'utilisateur et/ou l'opérateur d'affectation. Le code que vous avez fourni est parfaitement légal.

+0

en fait sometype est un shared_ptr avec copyctr et assop – bbb

+1

@bbb Puis le bu g est probablement dans la classe pointée par le pointeur partagé - éventuellement dans son destructeur. Vous devez publier un exemple complet illustrant le problème. –

+0

thx pour votre réponse. J'ai été capable de passer à boost :: shared_ptr et il semble faire disparaître le problème (utilisait shptr-impl personnalisé avant). – bbb

0

Désolé, le code semble très bien pour moi, à moins que quelque chose de mal est caché sous « sometype »