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

SL & STL C++ Discussion :

problème bizarre de mémoire(peut-être)


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 2
    Par défaut problème bizarre de mémoire(peut-être)
    Bonjour à tous,
    voilà je suis en train de développer un projet ayant pour but de dessiner une image à partir de données volumiques et donc les données que je traite dans mon programme sont plutôt grosses (environ 100 M l'image).

    Et donc j'ai un petit soucis quand je déclare une variable unsigned char dans une de mes classes, ça me fait un truc que j'ai jamais vu avant:

    soit je fais un truc tout bete genre:


    unsigned char nb = 0;
    cout << "nb: " << nb << endl;

    et ce truc m'affiche:

    nb:


    ou alors je l'utilise dans ma fonction comme ca:


    unsigned char index2 = 0;
    unsigned char bitArray[8] = {1, 2, 4, 8, 16, 32, 64, 128};

    for(int i = 0; i < 8; i++)
    {
    if(c.p[i].vC <= 0)
    index2 |= bitArray[i];

    cout << "index2: " << index2 << endl;
    }


    et alors la mon programme part en live, il se met a faire des bip system et ils m'affiche des trucs bizarre comme quand on ouvre un fichier binaire avec un éditeur de texte!!!!!

    Alors j'ai pensé que ça pourrais être dû à une fuite mémoire ou une surcharge de la pile parce que mon programme utilise plus de 400 M de mémoire vive à l'éxecution (je sais faut que j'optimise mais je suis déjà passé de 800 à 400).
    Mais quand j'essaie au meme endroit un:


    int nb = 0;
    cout << "nb: " << nb << endl;


    il me fait bien

    nb: 0


    donc là je sais vraiment pas quoi faire et donc si quelqu'un à une idée...
    merci d'avance.

  2. #2
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    salut,

    quand tu travailles avec un char , pour afficher sa valeur numérique il faut faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char nb = 0;
     
    cout << (int)nb << endl;
    Sinon il affiche la valeur ASCII de ta variable, ce qui est complètement différent de la valeur numérique.

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 2
    Par défaut
    Salut,

    ha ouai d'accord là je suis un peu sur le c** ben je te remercie je pensais pas que c'étais un truc aussi bête.
    Et alors dans ce cas quand tu veux comparer c'est la même chose ?
    genre tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    unsigned char index2 = 0;
    [...]
    if((int)index2 != 0 && (int)index2 != 255)
    [...]

  4. #4
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Salut,

    non c'est juste pour afficher.

    Pour comparer tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    unsigned char index;
     
    if (index == 0 || index == 255)
    {
       ///
    }
    Par contre si tu veux tester si ton caractère correspond au caractère ASCII '0', tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    unsigned char index;
     
    if (index == '0')
    {
      ///
    }
    Tu peux aussi faire la même chose avec les ints.
    Tu peux aussi, de cette manière, afficher le code ASCII des caractères:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cout << "A: " << (int)'A' << endl;
    cout << "0: " << (int)'0' << endl;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Problème MYSQL php ou peut-être ajax. je ne sais pas.
    Par reventlov dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/06/2015, 18h29
  2. problème non identifié (boucle peut être ?)
    Par cldlk dans le forum Débuter
    Réponses: 7
    Dernier message: 22/10/2014, 06h55
  3. Problème d'encodage (et peut-être de chiffrement)
    Par GiZeus dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 02/06/2011, 18h12
  4. problème de connexion, MTU peut-être
    Par bilouchka dans le forum Réseau
    Réponses: 0
    Dernier message: 26/04/2011, 13h32
  5. La mémoire ne peut être read
    Par asgardia dans le forum C
    Réponses: 11
    Dernier message: 07/05/2006, 22h09

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