IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

adresse this qui change


Sujet :

C++

  1. #1
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut adresse this qui change
    Bonjour,

    J'ai un petit soucis qui me semble enfantin, mais que je n'arrive pas à expliquer:

    Je suis sous visual studio, avec txtcontrol.

    J'ai une classe A qui hérite de txtcontrol.
    Le constructeur de A qui possède une ligne de débug affichant l'adresse this.
    Les méthodes de A affichent aussi l'adresse this.
    Et une méthode A.problème qui affiche l'adresse this (cette méthode est appelée par une callback lors de l'appuie sur un bouton).

    Lors de l’exécution:
    Log du constructeur adresse this = XXX
    Log de méthode adresse this = XXX
    .......
    Log de la méthode problème: this = YYY

    Pas de segfault, l’exécution se passe bien, pas d'invalid read, rien n'indiquant un problème.

    Comment est-ce possible d'avoir un this pointant sur YYY alors que seul un constructeur a été appelé créant une instance sur l'adresse XXX?

    PS: Cette classe n'est jamais dérivé, c'est la finale.
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 186
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 186
    Points : 17 126
    Points
    17 126
    Par défaut
    C'est que tu as une copie qui est faite. a priori, un argument ou le retour d'une fonction qui est fait par valeur.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Bah même avec une copie, je dois forcément avoir un appel au constructeur non?

    La seule chose permettant de faire ça serait de faire un appel à memcpy pour copier le contenu dans un autre pointeur. Et en l’occurrence, il n'y en a pas, ça serait trop compliqué de le faire.

    Je n’ai pas de constructeur par copie non plus, seul un constructeur sans paramètre.
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 958
    Points
    32 958
    Billets dans le blog
    4
    Par défaut
    Salut,

    ma boule de crystal a du mal à suivre.
    Mais vu que tu parles d'une callback sur appui de bouton, tu controles ça ? Ou c'est une lib qui le fait pour toi ? Et qui t'assures qu'il ne fait pas une copie ou quoi dans ton dos ? Et/ou que c'est pas threadé et ne finit juste pas dans le log mais est bel et bien copié ?

    Bah même avec une copie, je dois forcément avoir un appel au constructeur non?
    Bien sur, au constructeur... de copie.

    Je n’ai pas de constructeur par copie non plus, seul un constructeur sans paramètre.
    Raison de plus pour qu'il y ait une copie. Un constructeur par copie est généré pour toi.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Si XXX et YYY sont proche, on peut aussi imaginer un cas d'upcasting avec txtcontrol qui hériterait de plusieurs classes. Mais la copie me parait être l'hypothèse la plus probante. Pourquoi ne pas écrire un constructeur par copie qui throw ou log pour s'en assurer ?
    -- Yankel Scialom

  6. #6
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Effectivement la copie me semble la piste la plus probable.

    Je vais creuser la dessus.

    Pour répondre, je ne contrôle pas la callback (tout du moins la pile d'appel en résultant).

    J'ai mon bouton, avec un paramétrage de mfc qui dis d'appeler la fonction "problème" lors de l'appuie sur le bouton. (la callback se créer via des macro MFC si j'ai bien compris, car elle est déclarée en afx_msg).

    J'ai fait des tests sur mes autres callback et effectivement, il semblerait que mfc fasse une copie de l'objet, ce que je trouve un peu dingue.
    Toute les callback possède le même this (YYY) qui est différent des this (XXX) que j'utilise via des appels directe (sans passer par mfc).

    Et comme mon objet fait appel à txtcontrol (qui doit surement utiliser un singleton derrière, car je n'ai pas 2 documents, et les action faites par YYY ou XXX sont effectives), les actions sont bien répercuté sur le document, d'où mon étonnement .
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  7. #7
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 186
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 186
    Points : 17 126
    Points
    17 126
    Par défaut
    Montre nous le code de la méthode posant problème, par exemple.

    La divination a ses limites
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  8. #8
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Copie ou mouvement d'ailleurs.

  9. #9
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par leternel Voir le message
    Montre nous le code de la méthode posant problème, par exemple
    Pas le droit, je bosse en environnement secret defense :/.

    C'est pour ça que je suis passé par des explications, et les réponses correspondent à mon symptôme .
    Donc ça me suffit amplement.

    PS: je demandais pas une solution, ça je peux la trouver, mais plutôt une explication, ce que j'ai eu ^^.

    Je passe en résolu .
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  10. #10
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Citation Envoyé par skeud Voir le message
    je bosse en environnement secret defense
    La règle numéro 1 du SD : on ne parle pas de SD.
    -- Yankel Scialom

  11. #11
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par prgasp77 Voir le message
    La règle numéro 1 du SD : on ne parle pas de SD.
    Pas compris ><. Pas le droit de dire qu'on est en SD?

    Ce que j'ai signé fesait juste état que je n'avais pas le droit de copier, reproduire, expliquer, parler du projet etc ......
    En aucun cas j'ai vu une ligne spécifiant que je n'avais pas le droit de parler de mon niveau d'habilitation ^^.
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  12. #12
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 186
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 186
    Points : 17 126
    Points
    17 126
    Par défaut
    Tu as pourtant précisé que tu as un problème de code dans ton projet.
    Si quelqu'un sait sur quoi tu travailles, par exemple, parce qu'un de tes collègues a laché quelque chose, tu as donné cette information.

    Alors que si tu n'avais rien dit, ca pouvait être ton projet personnel du moment.
    Bon, c'est paranoïaque, mais ca reste vrai.

    Par contre, rien ne t'interdit de reproduire le problème sur un code beaucoup plus petit, anonymisé (je n'aime pas ce mot du tout... ca pue la faute )
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  13. #13
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    C'est là que je comprends pas, j'ai un soucis de code, j'en parle, mais en aucun cas je ne dévoile d'architecture, ni de composant, ni de code.

    Par contre je sais que je n'ai pas le droit d'envoyer du code anonyme. Et reproduire l'architecture, c'est juste hyper lourd comme traitement et juste un bout de code ne vous parlerais pas ^^.

    Faudrait que je me renseigne sur les choses que j'ai le droit ou non de dire, mais bon parler de techno, je suis pas sur que ça soit interdit ^^. c'est beaucoup trop vague pour que ça puisse porter préjudice.
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 958
    Points
    32 958
    Billets dans le blog
    4
    Par défaut
    Normalement les habilitations ne sont pas autorisées à être dites il me semble.
    Si tu es Secret Défense, Confidentiel Défense, ... ne doit pas sortir de toi (et tes supérieurs qui le savent).
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  15. #15
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    ça doit pas etre ça alors .

    Mais ça devient compliqué du coup, si t'as pas le droit de dire pourquoi t'as pas le droit de le dire ><
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  16. #16
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 186
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 186
    Points : 17 126
    Points
    17 126
    Par défaut
    Du coup, tu dis que tu n'as pas le droit. Sans dire parler d'habilitation.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  17. #17
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Oki, on m'en avait pas parler, c'est que je ne dois pas être secret defense du coup, mais juste une clause de confidentialité classique un peu plus poussé que les autres projets ^^.
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  18. #18
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 186
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 186
    Points : 17 126
    Points
    17 126
    Par défaut
    Secret défense, c'est un niveau assez élevé d'habilitation. Tu passes entre autre par une série d'enquêtes, dont un questionnaire assez poussé.
    Si tu es secret défense, tu le sais avec certitude
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  19. #19
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Bah j'ai eu une enquête judiciaire avec extrait de casier judiciaire, (mais pas de questionnaire) et les documents que je reçois sont estampillés secret défense, donc je pensais que je l'était, mais c'est peut-etre pas la même chose ^^.
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  20. #20
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Le jour où la DGA a approuvé ton habilitation, l'officier de sécurité de ta boîte à dû te faire signer un papier qui dit que tu es au courant d'être habilité SD et de ce que ça implique. Ensuite, SD ça sonne bien, mais en fait des ingés habilités on en compte à la pelle par milliers en France ; on habilite pour un oui ou pour un non (tu vas développer un logiciel qui pourrait être amené à traiter une donnée sensible en prod ? Boom ! SD/CD !). Du coup beaucoup prennent (à raison dans leur cas) l'habilitation à la légère, et transmettent ce sentiment (involontairement) à leurs collègues.
    -- Yankel Scialom

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Adresse IP fixe qui change toute seul
    Par runner77 dans le forum Administration
    Réponses: 9
    Dernier message: 12/02/2014, 23h51
  2. adresse qui change?
    Par epsilon777 dans le forum SL & STL
    Réponses: 3
    Dernier message: 28/04/2008, 13h55
  3. Image qui change lorsqu'on clique
    Par marsupilami34 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/08/2005, 18h28
  4. Variable qui change après un DispatchMessage
    Par SekYo dans le forum Windows
    Réponses: 9
    Dernier message: 30/09/2004, 17h22
  5. Réponses: 3
    Dernier message: 22/07/2002, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo