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

Windows Discussion :

Allocation memoire processus


Sujet :

Windows

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 88
    Points : 48
    Points
    48
    Par défaut Allocation memoire processus
    Bonjour,

    Pour un programme d'acquisition de données, j'ai besoin d'un gros tableau en mémoire (mémoire contiguë).
    Le gros tableau en question devrais pouvoir faire dans les 4 Go (je suis sous XP 64 bits)

    Seulement lorsque je fais un tableau de 2Go comme cela:
    Je n'arrive pas à exécuter mon programme.
    A la place j'ai l'erreur suivante :
    Cette application n'est pas une application win32 valide.
    Est ce que quelqu'un sait qu'elle est la politique de windows sur ces gros tableau en mémoire ?

    Merci !

  2. #2
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour

    Est ce que quelqu'un sait qu'elle est la politique de windows sur ces gros tableau en mémoire ?
    Pour les grosses allocations, mieux vaut passer par VirtualAlloc.

  3. #3
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 366
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 366
    Points : 20 402
    Points
    20 402
    Par défaut
    Citation Envoyé par jkalzsmu Voir le message
    Est ce que quelqu'un sait qu'elle est la politique de windows sur ces gros tableau en mémoire ?

    Merci !
    L'OS n'allouera jamais autant même avec un OS 64bits...
    Il "swappera" surement avec pagefile.sys
    Comme l'écrit Neitsa il faut appeler VirtualAlloc ou GlobalAlloc; le mieux est de consulter le MSDN.
    Pour plus de détails si tu peux le trouver c'est de se procurer "Inside NT" de Jeffrey Richter un wintellect

  4. #4
    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 781
    Points
    36 781
    Par défaut WOW64
    Salut,
    WXP64 supporte les modes 32 et 64 bits.
    Bien qu'il ne soit pas raisonnable d'allouer plus de 2GiB de mémoire s'il n'y a pas la mémoire physique 'derrière', j'ai l'impression que le compilo à généré une application 32 bits:
    Cette application n'est pas une application win32 valide
    Alors qu'il serait souhaitable qu'il génére une application 64 bits - et qu'il soit linké aux DLL correspondantes.
    - W
    PS: Lorsqu'on déclare:
    char tableau[2000000000]
    il y a de forte chance d'exploser la pile si c'est dans le corps d'une fonction.
    Par contre, je ne sais pas comment les différents éditeurs de liens vont se débrouiller s'il s'agit d'une variable 'globale'.
    Il serait peut être plus sage d'allouer la structure à l'initialisation avec un malloc/new/...
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    salut,
    a vrai dire tu ne fais l'allocation que sur le segment de données de ton exécutable (DS) mais pour accéder a directement à la mémoire ,tu peut faire une allocation sur le tas lointain en utilisant le mot clé "far" .

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    far, ça datait de Win16. Ce mot ne veut plus rien dire en 32 bits et supérieur.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 366
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 366
    Points : 20 402
    Points
    20 402
    Par défaut
    Citation Envoyé par pitikak Voir le message
    salut,
    a vrai dire tu ne fais l'allocation que sur le segment de données de ton exécutable (DS) mais pour accéder a directement à la mémoire ,tu peut faire une allocation sur le tas lointain en utilisant le mot clé "far" .
    ehh oui à part que ça c'est de la programmation 16bits en mode réel ce dont tu parles et que Windows heureusement fonctionne dans le mode FLAT ou mode protégé et que la mémoire est accédée linéairement.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    oui c'est vrai ,
    moi j'utilise un vieux compilateur parsque je travail sous DOS

  9. #9
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 366
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 366
    Points : 20 402
    Points
    20 402
    Par défaut
    Citation Envoyé par pitikak Voir le message
    oui c'est vrai ,
    moi j'utilise un vieux compilateur parsque je travail sous DOS
    Oui mais ici c'est le forum de programmation Windows très cher

Discussions similaires

  1. Allocation memoire et management de la memoire
    Par micamused dans le forum C++
    Réponses: 9
    Dernier message: 16/11/2005, 09h07
  2. probleme avec les allocations memoires
    Par david35 dans le forum C
    Réponses: 5
    Dernier message: 21/10/2005, 11h49
  3. allocation memoire
    Par suckthewindow dans le forum C++
    Réponses: 2
    Dernier message: 18/10/2005, 14h57
  4. Réponses: 13
    Dernier message: 05/01/2004, 19h00
  5. Allocation memoire Limité avec TurboC
    Par sebastien51 dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 15/10/2003, 23h32

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