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 :

tableaux de 64 bits, taille négative ?


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut tableaux de 64 bits, taille négative ?
    Bonjour

    J'essaie d'avoir un tableau de type unisnged __int64 de taille 64 bits, mais le compilateur me donne une erreur comme quoi la taille du tableau est négative ?

    Quelqu'un aurait-il une piste ?

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include <iostream>
    #include<cstdio>
    using namespace std;
     
    int main()
    {
    FILE * f;
    unsigned __int64 octet8[ULLONG_MAX] = {0};
    unsigned __int64 a = 0
    unsigned char t1[1048575];
     
    f=fopen("test.bin","rb");
    if(f==NULL)cout<<"Impossible d'ouvrir le fichier en lecture !"<<endl;
    else
       {
       fread(t1,sizeof(int),1048576,f);
       fclose(f);
       }
     
       a = octet8[(int)t1[0] * (int)t1[1]];
     
       cout << a << endl;
     
     
    char buffer[2];
    cin >> buffer;
     
    return 0;
    }
    Merci

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Passe au stream (std::{i|o}fstream) et aux std::string.
    Ca t'évitera bien des problèmes
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned __int64 octet8[ULLONG_MAX] = {0};
    Je suppose que c'est ULONG_MAX si c'est le cas ça fait pas un demi-tableau.

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Tu as plusieurs centaines de milliers de To de RAM à consacrer à ton tableau ? Non ?
    Alors je doute que ça marche.

    Il te faudrait un espace de mémoire de 128 bits pour que ça marche, donc avec du windows sur 32 bits...
    Boost ftw

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par Lucien63 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned __int64 octet8[ULLONG_MAX] = {0};
    Je suppose que c'est ULONG_MAX si c'est le cas ça fait pas un demi-tableau.
    Bien c'est un exemple que j'ai pris sur le net, mais que veux-tu dire par ça ne fait pas un demi-tableau ?

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Juste comme ça, je te rappelle que ULLONG_MAX est au minimum 18446744073709551615.
    Boost ftw

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Par demi tableau (c'est une expression de chez moi) , loufoque t'a donné la reponse, il est gigantesque. Et en plus il est initialisé.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Juste comme ça, je te rappelle que ULLONG_MAX est au minimum 18446744073709551615.

    Oui, je veux un tableau de 64 bits

  9. #9
    Membre régulier Avatar de Onlava
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 92
    Points : 112
    Points
    112
    Par défaut
    Comme l'a dit loufoque, pour faire un table de int64 de 0xFFFFFFFFFFFFFFFF éléments il faut 140'737'488'355'320 MB de mémoire-vive.
    D'ou le problème.
    XOR Onlava, Onlava

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut tu y es.
    Citation Envoyé par AsmCode Voir le message
    Oui, je veux un tableau de 64 bits
    unsigned __int64 tableau[{taille du tableau }];

    C'est "unsigned _int64" qui va dire que les éléments du tableau seront des 'entiers 64 bits non signés'.
    Quant à la taille de celui ci, elle doit être raisonnable par rapport à la capacité d'adressage (virtuelle).
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [10.2.0.4 sur W2K3 32 bits] taille maximale des fichiers
    Par fred_04510 dans le forum Administration
    Réponses: 4
    Dernier message: 24/01/2011, 16h59
  2. Réponses: 1
    Dernier message: 27/07/2006, 16h58
  3. [Tableaux] Taille cellule de tableau
    Par johnkro dans le forum Langage
    Réponses: 4
    Dernier message: 27/07/2006, 08h48
  4. [Tableaux] trouver taille tableau html en php
    Par eulalie15 dans le forum Langage
    Réponses: 4
    Dernier message: 03/07/2006, 13h47
  5. [Tableaux] Comment connaitre la taille d'un tableau?
    Par Polaire76 dans le forum Langage
    Réponses: 2
    Dernier message: 21/11/2005, 17h34

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