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 :

Gros Tableaux en C [En attente]


Sujet :

C++

  1. #1
    Membre habitu�
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par d�faut Gros Tableaux en C
    Bonjour,

    Je programme en C++ avec Code::Block sous Windows 7.

    J'ai deux tableaux: un de dimension 3000 et un autre de dimension 1500. Les �l�ments sont des tableau de dimensions 500000 de char.

    La compilation se passe sans probl�me mais quand inex�cutable se lance le message de fin d�ex�cution apparait directement.

    Je voudrai savoir si il a des param�tres � modifier pour permettre a l ex�cutable de se lancer normalement.

    Merci

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Inscrit en
    D�cembre 2011
    Messages
    9 026
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 32
    Localisation : France, Loire (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 9 026
    Par d�faut
    Bonjour,

    Peux-tu nous montrer le message d'erreur ?
    Peux-tu nous montrer ton code?

    As-tu essay� de passer par des tableau de pointeur au lieu de faire des tableau 2D ?

  3. #3
    Membre �m�rite
    Avatar de Ekleog
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par d�faut
    (3000+1500)*500000 = 2250000000
    2,25G.
    Normal que windows pr�f�re faire planter ton programme que de lui allouer 2,25G de stack.
    Peut-�tre faudrait-il essayer de le lancer en mode administrateur, si il n'y a aucun moyen de se d�brouiller pour prendre moins de m�moire ?

  4. #4
    Membre habitu�
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par d�faut
    Citation Envoy� par Ekleog Voir le message
    (3000+1500)*500000 = 2250000000
    2,25G.
    Normal que windows pr�f�re faire planter ton programme que de lui allouer 2,25G de stack.
    Peut-�tre faudrait-il essayer de le lancer en mode administrateur, si il n'y a aucun moyen de se d�brouiller pour prendre moins de m�moire ?
    Oui le probleme est la evidemment. Notons que ca marche avec (1500+1500)*500000
    De plus, 2250000000 octets ne fais en fait "que" 2,14Go !

    J'ai essayer de lancer code::block en mode administrateur mais c est exactement pareil. Je ne peux pas lancer l executable en mode administrateur car quand je lance le .exe cree windows me dit: BlahBlahBlah.exe is not a valid Win32 application.

    Je pourrai me debrouiller pour diviser la taille par 4 mais je vais avoir plus de donnees a prendre en compte bientot donc ca ne fera que repouser le probleme...

    Merci

  5. #5
    Membre �m�rite
    Avatar de Ekleog
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par d�faut
    Citation Envoy� par Emmanuel_exeter Voir le message
    Oui le probleme est la evidemment. Notons que ca marche avec (1500+1500)*500000
    De plus, 2250000000 octets ne fais en fait "que" 2,14Go !
    Faux. Ca fait 2,25Go. Et 2,095Gio. Oui, les unit�s standard sont moches.
    "Preuve" en une session shell :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ units 
    2526 units, 72 prefixes, 56 nonlinear units
     
    You have: 2250000000 octets
    You want: gigaoctets
            * 2.25
            / 0.44444444
    You have: 2250000000 octets
    You want: gibioctets
            * 2.0954758
            / 0.47721859
    J'ai essayer de lancer code::block en mode administrateur mais c est exactement pareil. Je ne peux pas lancer l executable en mode administrateur car quand je lance le .exe cree windows me dit: BlahBlahBlah.exe is not a valid Win32 application.
    Il y a un probl�me avec ta compilation alors. Il ne dit que �a ? As-tu bien tent� de recompiler et d'aller chercher la version release ?

    Je pourrai me debrouiller pour diviser la taille par 4 mais je vais avoir plus de donnees a prendre en compte bientot donc ca ne fera que repouser le probleme...

    Merci
    Je ne sais pas combien tu as de RAM, mais si tu peux diviser la taille par 4, fais le. Parce que mieux vaut �a qu'acheter 4 fois plus de RAM. Non ?

    Par ailleurs, il est normal que windows bloque une utilisation qui tente d'utiliser autant de RAM. Sinon, tu en lances 3, et tu fais crasher l'ordinateur. Comportement d'un virus basique.

  6. #6
    Membre habitu�
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par d�faut
    A la compilation j ai ca:

    Compiling: main1.cpp
    Process terminated with status 0 (0 minutes, 1 seconds)
    0 errors, 0 warnings

    mais quand il execute, j ai ca:

    Process returned 0 (0x0) execution time : 0.002 s
    Press any key to continue.

    et la version release n est pas une application Windows valide.

    J ai 8.00 GB de RAM donc normalement assez pour gerer mais tableaux.

    Merci

  7. #7
    Membre �m�rite
    Avatar de Ekleog
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par d�faut
    Etrange...

    En tout cas, il est normal que windows bloque ton application : si un virus (basique) voulait attaquer ton ordinateur, il pourrait allouer 2G en boucle pour tout faire exploser. Du coup, il y a (normalement, je connais mal win) une limite maximale � l'espace m�moire d'un processus.

    Es-tu s�r que tu affiches quelque chose dans ton programme ? Il peut �tre normal que le message de fin d'application s'affiche.

    Pourquoi ta version release n'est-elle pas une application windows valide ? Le probl�me vient peut-�tre de l�. As-tu touch� � des options de configuration ?

    Ta version debug est-elle une application valide ?

  8. #8
    Inactif  


    Homme Profil pro
    Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Inscrit en
    D�cembre 2011
    Messages
    9 026
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 32
    Localisation : France, Loire (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 9 026
    Par d�faut
    Est-ce que tu peux nous montrer ton code?


    Si ton programme retourne 0 c'est que l'ex�cution s'est bien pass�.

    Tu t'es peut �tre tromp� en faisant des exit 0 (ou des return 0 dans le main) en cas d'erreurs.
    Tu t'es peut �tre tromp� sur certaines conditions qui font que ton programme n'affiche rien au final.

    As-tu essay� de mettre des printf un peu de partout pour voir si ils sont affich� et ainsi o� ton programme se comporterait bizarrement?

    Ton probl�me ne vient pas de l'allocation, en cas d'erreur, tu as soit un SEGFAULT soit un STACK OVERFLOW.

  9. #9
    Membre �m�rite
    Avatar de Ekleog
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par d�faut
    Sauf s'il compile toujours en release, auquel cas windows dissimule le segfault / SO en une erreur "anonyme", comme celle dont il parle. Enfin, je crois. Parce que s'il n'y a pas de SO � 2GB, il y a franchement un probl�me...

  10. #10
    Inactif  


    Homme Profil pro
    Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Inscrit en
    D�cembre 2011
    Messages
    9 026
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 32
    Localisation : France, Loire (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 9 026
    Par d�faut
    Citation Envoy� par Ekleog Voir le message
    Sauf s'il compile toujours en release, auquel cas windows dissimule le segfault / SO en une erreur "anonyme", comme celle dont il parle. Enfin, je crois. Parce que s'il n'y a pas de SO � 2GB, il y a franchement un probl�me...
    Je sais que Windows aime dissimuler des messages d'erreurs, mais elle n'a aucun int�r�t � dissimuler les messages d'erreurs des autres.

    Essaye de compil� sous Linux voir ce que �a donne.
    M�me si je doute qu'on ai un r�sultat bien diff�rent.

    Pour ce message :
    BlahBlahBlah.exe is not a valid Win32 application.
    Avec quoi compiles-tu?



    Citation Envoy� par http://www.computerhope.com/issues/ch000726.htm
    C:\Program Files\myprogram\program.exe is not a valid Win32 application.
    Cause

    This issue can be caused by any of the below possibilities.

    File is corrupt, bad, or missing.
    File is not designed for your version of Windows.
    File is a virus, worm, or other malware file.
    Hardware incompatibility.

    [....]

    File is a virus, worm, or other malware file

    This error can be generated by a file that is a virus, worm, Trojan, or other malware file. Often, this will be caused because the virus scanner installed in the computer will not allow the file to be installed or run. Try scanning the file to verify it is not a virus or infected.

    If the file has been checked and is clean, it is still possible that the virus protection program or another program installed on the computer is causing issues during the install or execution of the program. Boot the computer into Safe Mode and try running the program; booting the computer into Safe Mode will make sure nothing is running in the background that could be causing this issue.
    Quand on a un message d'erreur, rien qu'en le tapant dans un moteur de recherche, on arrive souvent � avoir des r�ponses.
    Essaye de booter en mode sans �chec et de lancer ton programme.

  11. #11
    Invit�
    Invit�(e)
    Par d�faut
    salut,

    question b�te, tu fais bien une allocation dynamique?

    Parce que si tu tapes dans la stack, c'est clair que ton exe planteras.

  12. #12
    Membre habitu�
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par d�faut
    Bonjour,
    Voici un code qui fonctionne a la compilation et a l'ex�cution parfaitement:

    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
    #include <iostream>
    using namespace std;
     
    #define A 49294
    #define NB_1 3004
    #define NB_2 1999
     
    struct individu_structure
    {   char tab[A];
        int etat;
    };
     
    individu_structure tabindividu[NB_1];
     
    individu_structure tabindividu2[NB_2];
     
    int main()
    {
        cout << "Hello world!" << endl;
        return 0;
    }
    Il affiche:

    Hello world!

    Process returned 0 (0x0) execution time : 0.025 s
    Press any key to continue.
    Puis un code avec le volume de data dont j ai besoin:

    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
    #include <iostream>
    using namespace std;
     
    #define A 490294
    #define NB_1 3004
    #define NB_2 1999
     
    struct individu_structure
    {   char tab[A];
        int etat;
    };
     
    individu_structure tabindividu[NB_1];
     
    individu_structure tabindividu2[NB_2];
     
    int main()
    {
        cout << "Hello world!" << endl;
        return 0;
    }
    Et la il affiche:

    Process returned 0 (0x0) execution time : 0.025 s
    Press any key to continue.
    Et le point exe engendrer en mode Release tout comme en mode Debug est non valide.

    Je compile avec Code::Block qui lance gcc a la compilation

  13. #13
    Inactif  


    Homme Profil pro
    Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Inscrit en
    D�cembre 2011
    Messages
    9 026
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 32
    Localisation : France, Loire (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 9 026
    Par d�faut
    C'est tr�s �trange...
    Le probl�me, c'est que ton programme doit planter avant m�me d'entrer dans le main.

    Essaye d�j� de ne pas utiliser de variables globales.


    Que te donne ceci ?
    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
     
    #include <iostream>
    using namespace std;
     
    #define A 490294
    #define NB_1 3004
    #define NB_2 1999
     
    struct individu_structure
    { char tab[A];
    int etat;
    };
     
    int main()
    {
    cout << "Hello world!" << endl;
     
    individu_structure tabindividu[NB_1];
    cout << "1" << endl;
    individu_structure tabindividu2[NB_2];
    cout << "2" << endl;
    return 0;
    }
    Sinon pense � utiliser les balises CODE quand tu pose du code ici.

  14. #14
    Membre �m�rite
    Avatar de Ekleog
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par d�faut
    Le fait que le programme soit non valide vient probablement du fait que tu as trop de donn�es dans des globales.
    Par ailleurs, pourrais-tu chercher le seuil auquel �a passe de "marche" � "marche pas" ? Ce chiffre pourrait nous aider � trouver ce qui cause le probl�me.

    D'ailleurs, as-tu test� ton programme avec ton anti-virus ? Peut-�tre celui-ci pense-t-il que c'est un virus.

    Enfin, sous linux, je n'ai aucun probl�me pour utiliser ce programme. Enfin, je compile avec -O2, peut-�tre qu'il retire carr�ment les variables globales, vu qu'elles ne sont pas utilis�es.

  15. #15
    Membre habitu�
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par d�faut
    sans variable global c est la loose ca plante pour deja A=49 NB1=3004 et NB2=1999.
    Si c est pour etre aussi limiter autant que je reprenne un amstrad 6128 !

    D autre part pour la limite: A=490294 NB1=1904 et NB2=1999 ca marche mais A=490294 NB1=2004 et NB2=1999 ca plante.

    Sous linux si ces variables sont ignorees par ta directive alors tu n utilise rien du tous !

  16. #16
    Inactif  


    Homme Profil pro
    Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Inscrit en
    D�cembre 2011
    Messages
    9 026
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 32
    Localisation : France, Loire (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 9 026
    Par d�faut
    C'est tout � fait normal, les variables globales sont allou�e sur le tas alors que les variables locales sont allou�e sur la pile.

    L� tu as un message d'erreur, c'est d�j� bon signe.

    Maintenant, il ne te reste plus qu'� faire des new[] (et bien penser � faire les delete[]) pour allouer dynamiquement tes tableaux.
    Ainsi tu alloueras sur le tas.

    Apr�s, reste � voir si tu as encore des messages d'erreurs ou non.


    Sinon, comme on est en C++, pourquoi ne pas utiliser des vector ou des array?

  17. #17
    Membre habitu�
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par d�faut
    Faux !
    Je n'ai aucun message d'erreur, le programme plante a l execution !

  18. #18
    Inactif  


    Homme Profil pro
    Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Inscrit en
    D�cembre 2011
    Messages
    9 026
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 32
    Localisation : France, Loire (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 9 026
    Par d�faut
    *hum*

    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
    #include <iostream>
    using namespace std;
     
    #define A 490294
    #define NB_1 3004
    #define NB_2 1999
     
    struct individu_structure
    { char tab[A];
    int etat;
    };
     
    int main()
    {
    cout << "Hello world!" << endl;
     
    individu_structure * tabindividu = new individu_structure[NB_1];
    cout << "1" << endl;
    individu_structure * tabindividu2 = new individu_structure[NB_2];
    cout << "2" << endl;
     
    delete [] tabindividu;
    delete [] tabindividu2;
    return 0;
    }
    Compil� sous un d�bian virtualis�, aucun probl�me l'ex�cution se passe correctement.

    Compil� sous windows 7 on a cette erreur :
    Hello world!
    1
    terminate called after throwing an instance of 'std::bad_alloc'
    what(): std::bad_alloc

    This application has requested the Runtime to terminate it in an unusual way.
    Please contact the application's support team for more information.

    Process returned 3 (0x3) execution time : 10.387 s
    Press any key to continue.
    Il plante car il ne trouve pas l'espace n�cessaire pour allouer.
    Alors je ne sais pas comment tu compiles... mais je vois bien un message d'erreur.

    D'ailleurs l'antivirus crise aussi.

    D�j�, il faudrait savoir ce que tu veux faire, as-tu r�ellement besoin de tableau aussi grand?


    Avec des tableaux "normaux" :
    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
     
    #include <iostream>
    using namespace std;
     
    #define A 490294
    #define NB_1 3004
    #define NB_2 1999
     
    struct individu_structure
    { char tab[A];
    int etat;
    };
     
    int main(void)
    {
    cout << "Hello world!" << endl;
     
    individu_structure tabindividu[NB_1];
    cout << "1" << endl;
    individu_structure tabindividu2[NB_2];
    cout << "2" << endl;
    return 0;
    }
    �a ne compile pas :
    C:\Users\Neckara\Desktop\f\main.cpp||In function 'int main()'
    C:\Users\Neckara\Desktop\f\main.cpp|17|warning: unused variable 'tabindividu' [-Wunused-variable]|
    C:\Users\Neckara\Desktop\f\main.cpp|19|warning: unused variable 'tabindividu2' [-Wunused-variable]|
    C:\Users\Neckara\Desktop\f\main.cpp|13|error: total size of local objects too large|
    ||=== Build finished: 1 errors, 2 warnings ===|
    De m�me sous mon d�bian :
    neckara@NeckDebian:~/Bureau$ g++ test.cpp -o exe
    test.cpp: In function �int main()�:
    test.cpp:13: error: total size of local objects too large

    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
    #include <iostream>
    using namespace std;
     
    #define A 490294
    #define NB_1 3004
    #define NB_2 1999
     
    struct individu_structure
    { char tab[A];
    int etat;
    };
    individu_structure tabindividu[NB_1];
    individu_structure tabindividu2[NB_2];
    int main(void)
    {
    cout << "Hello world!" << endl;
     
     
    cout << "2" << endl;
    return 0;
    }
    Il plante avant m�me l'arriv�e dans le main, il affiche donc rien.
    Et ce que ce soit sous D�bian ou windows


    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
    #include <iostream>
    #include <list>
    using namespace std;
     
    #define A 490294
    #define NB_1 3004
    #define NB_2 1999
     
    struct individu_structure
    { char tab[A];
    int etat;
    };
    int main(void)
    {
    cout << "Hello world!" << endl;
    list<individu_structure> l(NB_2);
    cout << "1" << endl;
    list<individu_structure> l1(NB_1);
    cout << "2" << endl;
    return 0;
    }
    Sous windows7 :
    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
    #include <iostream>
    #include <list>
    using namespace std;
     
    #define A 490294
    #define NB_1 3004
    #define NB_2 1999
     
    struct individu_structure
    { 
        char tab[A];
        int etat;
    };
     
    int main(void)
    {
        cout << "Hello world!" << endl;
        list<individu_structure> l(NB_2);
        cout << "1" << endl;
        list<individu_structure> l1(NB_1);
        cout << "2" << endl;
        return 0;
    }
    Y'a pas � chercher, tes tableaux sont beaucoup trop gros.

  19. #19
    Membre habitu�
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par d�faut
    Que signifi un debian virtualise?
    J ai le meme plantage avec l'utilisation de new en revanche avec des tableaux "normaux" pour moi il compile mais crash a l execution.
    C est en utilisant des variables globales que les resultats sont de tres loin les meilleurs !!!! (pour rapel ca tourne avec A 490294 NB_1 1904 NB_2 1999)
    Cependant Il crash avant d arriver dans le mail pour les dimensions de tableaux dont j ai besoin alors que ma ram unitilise est a priori suffisantes.
    Sur ma machine je peut donc allouer plus en utilisant variables globals que en passant par des new

  20. #20
    Inactif  


    Homme Profil pro
    Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Inscrit en
    D�cembre 2011
    Messages
    9 026
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 32
    Localisation : France, Loire (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 9 026
    Par d�faut
    Citation Envoy� par Emmanuel_exeter Voir le message
    Que signifi un debian virtualise?
    C'est un d�bian que je lance dans une machine virtuelle.
    Une machine virtuelle est un ordinateur �mul�.
    Je fait donc tourner un ordinateur �mul� sous mon windows7 pour �viter de rebooter quand je fait des tests.


    Citation Envoy� par Emmanuel_exeter Voir le message
    J ai le meme plantage avec l'utilisation de new en revanche avec des tableaux "normaux" pour moi il compile mais crash a l execution.
    C est en utilisant des variables globales que les resultats sont de tres loin les meilleurs !!!! (pour rapel ca tourne avec A 490294 NB_1 1904 NB_2 1999)
    Cependant Il crash avant d arriver dans le mail pour les dimensions de tableaux dont j ai besoin alors que ma ram unitilise est a priori suffisantes.
    Sur ma machine je peut donc allouer plus en utilisant variables globals que en passant par des new
    D�j� est tu s�r d'avoir besoin d'autant de m�moire? Que cherches-tu � faire exactement?

    L'avantage des news c'est que tu pourras allouer et d�sallouer selon tes besoins, ce n'est pas n�gligeable.
    De plus, les variables globales non constantes sont une tr�s mauvaises id�es.

    N'importe qui peut modifier cette variable et on ne sais pas qui la modifie et quand.
    D�j� �a va � l'encontre de tous les principes objets du C++ mais en plus, bonjour les d�g�ts si jamais tu es dans un contexte multithread.

    M�me sans utiliser des threads, il sera tr�s difficile de trouver une erreur provoquant une valeur incoh�rentes dans tes variables globales.

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 3 123 Derni�reDerni�re

Discussions similaires

  1. passage de gros tableaux par adresse
    Par ol9245 dans le forum MATLAB
    R�ponses: 7
    Dernier message: 10/10/2012, 11h51
  2. Gros tableaux chronologiques
    Par regdobey dans le forum C#
    R�ponses: 2
    Dernier message: 20/07/2009, 21h04
  3. Gestion de gros tableaux
    Par DranDane dans le forum ASP.NET
    R�ponses: 4
    Dernier message: 01/09/2008, 15h31
  4. R�ponses: 1
    Dernier message: 06/08/2008, 09h35
  5. [Tableaux] Livre d'or gros probl�me
    Par mesdy dans le forum Langage
    R�ponses: 8
    Dernier message: 08/05/2007, 16h46

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