|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Futur Membre du Club
![]() Inscription : octobre 2007 Messages : 56 ![]() |
Bonjour,
j'ai besoin dans le cadre de mon projet d'inserer a mon interface une sequence<double> (pour avoir une liste de coefficients dynamique) J'ai repris l'exemple de base et comme je veux eviter au maximum les new (qui entraine souvent des fuites memoires), j'ai essaye d'utiliser des references sauf qu'au 2nd appel de ma sequence, j'ai droit a Caught a CORBA::COMM_FAILURE chez le client et pour le serveur un erreur de plusieurs pages commencant par : Upcall Hello! 2 *** glibc detected *** ./Server: double free or corruption (fasttop): 0x0000000001e022d0 *** ======= Backtrace: ========= Voici mon code : Tout d'abord Echo.idl Code :
Code :
Code :
Merci de votre aide |
||||||
|
|
00
|
|
|
#2 | ||
|
Membre éclairé
![]() Julien EnochArchitecte technique Inscription : septembre 2006 Messages : 219 ![]() |
Bonjour,
Le problème vient de l'implémentation de l'opération coef() côté serveur. Par convention CORBA laisse à l'appelant (le client) la responsabilité la gestion mémoire de l'objet retourné par l'opération du serveur. Il faut donc lui renvoyer une copie de la liste. L'ORB du serveur va ensuite détruire l'objet retourné par l'opération coef() juste après envoi de la requête retour au client. Donc ton cas liste est détruit au 1er appel. Au 2e appel, il est par chance encore accessible en mémoire, mais en fin de requête un 2e delete est fait (d'où le "double free"). Une implémentation correcte serait celle-ci: Code :
|
||
|
|
00
|
|
|
#3 | ||
|
Futur Membre du Club
![]() Inscription : octobre 2007 Messages : 56 ![]() |
Donc je suis oblige de faire appel a new.
Je dois donc ensuite faire dans mon client pour liberer ma memoire: Code :
|
||
|
|
00
|
|
|
#4 | ||
|
Membre éclairé
![]() Julien EnochArchitecte technique Inscription : septembre 2006 Messages : 219 ![]() |
Bonjour,
Le mieux c'est d'utiliser un type _var côté client. Code :
|
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com