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 :

Allocation non utilisable


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    77
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Par d�faut Allocation non utilisable
    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
    30
    31
    32
     
    #include "stdafx.h"
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <iostream>
    #define MAX_ITERATION 5000000
    #include <exception>
     
    int _tmain(int argc, _TCHAR* argv[])
    {
        double * r;
    	char c;
        unsigned int i = 0;
     
        try
        {
    		r = new double[MAX_ITERATION];
    		if(r != NULL)
    		{
    			for( i  = 0 ; i < MAX_ITERATION ; ++i)	
    				r[i] = rand();
    			delete [] r;
    		}
        }catch(std::exception e)
        {
    	std::cout << e.what() << std::endl;
    	return 0;
        }
    	std::cin >> c;
    	return 0;
    }
    1) Pourquoi Windows ne passe pas pour le catch lorsque j'ai l'erreur au 2) (je n'ai aucun fichier de sortie et m�me avec des cout, je ne vois rien, et l'option des exception est activ�e dans les propri�t�s).
    2) Pourquoi ai-je l'erreur : "0xC0000005: Access violation reading location 0x00030000."
    3) Pourquoi maintenant que je le refait, je n'ai pas d'erreurs? (je n'ai rien chang� pour les mauvaises langues )

  2. #2
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

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

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    1/ Peut-�tre parce qu'erreur syst�me et exceptions sont des choses diff�rentes, et que malgr� les specs, un probl�me d'allocation puisse cr�er une erreur syst�me, et non pas une exception std::bad_alloc. Par contre, il y a moyen sous Visual C++ de mettre un mode de compatibilit� erreurs syst�me/exception, avec le bon flag de compilation (genre /EHa), un catch(...) pourrait attraper des choses.

    2/ Aucune id�e

    3/ Peut �tre utilises-tu par ailleurs moins de m�moire qu'avant ?
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    77
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Par d�faut
    L'allocation se passe normalement (je le pense car si j'enleve les affectations, il ne se passe rien).
    Je me suis aper�u que lorsque je lan�ais une premiere fois le debuggueur et qu'il me renvoyait une exception du style "stack overflow"(j'avais test� avec une allocation statique pour voir..), � la seconde execution, il me lancait l'erreur d'acces.
    Effectivement, il faut mettre le flag /EHa pour recuperer aussi les exceptions SEH (=Erreur systeme d'apres toi . Le /EHsc ne concerne que les exceptions "normales" ).

    Merci de tes pistes

    Maintenant, il faut que je vois comment allouer plus que ne m'autorise le pointeur standart. D'apres mes souvenirs, il me semble qu'il faut utiliser des "Huge pointer" ou des trucs dans le genre ou alors c'est un probleme de continuit� memoire... M'enfin, sur 4 GO dont plus de 3Go de libre je devrais pouvoir avoir plus de 400Mo d'allocation sur un pointeur (sans passer par une liste chain�e)... Faut que j'investigue

  4. #4
    Expert confirm�

    Homme Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    F�vrier 2007
    Messages
    4 253
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par d�faut
    Citation Envoy� par ledjlale
    Maintenant, il faut que je vois comment allouer plus que ne m'autorise le pointeur standart. D'apres mes souvenirs, il me semble qu'il faut utiliser des "Huge pointer" ou des trucs dans le genre ou alors c'est un probleme de continuit� memoire... M'enfin, sur 4 GO dont plus de 3Go de libre je devrais pouvoir avoir plus de 400Mo d'allocation sur un pointeur (sans passer par une liste chain�e)... Faut que j'investigue
    J'alloue tous les jours 2Go de RAM en un seul bloc d�s le lancement de mon appli (on a notre propre gestion de m�moire interne), sur une machine n'ayant que 512Mo.... Par contre, 2Go est la limite sous XPx32 (je ne sais pas sous Linux ou sous Vista x32), � moins de lancer windows avec un flag sp�cial (on peut monter � 3Go).
    Mais on s'en fiche que ce soit libre ou pas... ca c'est le r�le de la m�moire virtuelle... et c'est toujours d'un seul bloc (merci encore la m�moire virtuelle).

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    77
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Par d�faut
    Mouais marrant.
    J'ai le m�me type de code sauf que dans la partie gestion de l'exception, j'utilise deux types de librairies differentes (STL et Qt). L'un m'autorise l'allocation (STL), et l'autre non (std::bad_alloc). Je vais continuer dans le forum Qt.

    http://www.developpez.net/forums/sho...04#post2340304

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Non-utilisation d'un caract�re g�n�rique
    Par ehrhart.jy dans le forum Access
    R�ponses: 2
    Dernier message: 13/07/2006, 11h02
  2. [TUNING] pb non utilisation de l'index
    Par ruthene dans le forum Oracle
    R�ponses: 10
    Dernier message: 13/04/2006, 17h02
  3. Javascript : non utilisation du CSS
    Par lafracas dans le forum Mise en page CSS
    R�ponses: 1
    Dernier message: 12/04/2006, 09h49
  4. [SERVICE INTERACTIF] Form non utilisable apres logoff/logon
    Par Spart64 dans le forum API, COM et SDKs
    R�ponses: 4
    Dernier message: 05/03/2006, 13h32
  5. R�ponses: 1
    Dernier message: 28/04/2004, 19h36

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