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 :

[malloc] compréhension autour de la taille


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut [malloc] compréhension autour de la taille
    Bonjour à tous.
    J'ai un petit souci de compréhension autour du malloc. J'ai eu besoin de faire en C des tableaux en deux dimensions créés dynamiquement. J'ai utilisé un malloc (rien de bien méchant jusque là). Je n'ai pas eu de problème lors de l'exécution du code, et pourtant quelque chose me chagrine beaucoup : si je dimensionne un tableau de 10 x 10, je devrais avoir une erreur en voulant lire la case (11,1). Et pourtant je n'ai rien... alors je me pose une question autour de mon code.
    Voici un extrait :
    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
    struct Complex
    {
    	double dReal;
    	double dImg;
    };
    struct Matrix
    {
    	long iMaxRow;
    	long iMaxCol;
    	Complex * cpxTab;
    };
    void main()
    {
    	Complex *pA, *pB, *pC;
    	Matrix Matrice;
     
            // init de la structure matrice
    	Matrice.iMaxRow=10;
    	Matrice.iMaxCol=10;
    	Matrice.cpxTab =   (Complex *) malloc(Matrice.iMaxCol* Matrice.iMaxRow * sizeof(Complex));
     
           //je remplie quelques complexes que je vais mettre dans mon tableau
    	Matrice.cpxTab[2].dReal =1;
    	Matrice.cpxTab[2].dImg =0; 
           //connaissant iRow, iCol je peux me retrouver facilement dans le tableau : TabIndice=Matrice.iMaxRow*(iRow-1)+iCol-1	
            printf(" lecture de (9,2) %f\n", Matrice.cpxTab[81].dImg); //pas d'erreur ok
            printf(" lecture de (11,1) %f\n", Matrice.cpxTab[100].dImg); //pas d'erreur... ce qui me pose problème!
     
    }
    Je ne comprends pas pourquoi le programme ne plante pas. Est-ce que quelqu'un aurait une idée sur la question?

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Lors d'accès illégaux, le plantage peut être immédiat, mais peut se produire plus tard ou de temps en temps ou produire un comportement erratique ultérieur du programme, ou..., ou sembler être sans incidence.
    Tout est possible : le comportement est indéfini.

  3. #3
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    Donc si j'ai bien compris c'est pas parce que je fais une opération d'illégale que le compilateur m'arrêtera... C'est déstabilisant.
    Merci Diogene pour ta réponse.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 24/06/2014, 16h57
  2. Question autours des tailles des types
    Par chronos_ dans le forum Langage
    Réponses: 1
    Dernier message: 06/08/2013, 11h01
  3. malloc pour des grandes tailles mémoires
    Par SuperSeb95 dans le forum C
    Réponses: 9
    Dernier message: 21/05/2012, 14h40
  4. Taille d'allocation de Malloc
    Par eric30eric dans le forum Bibliothèque standard
    Réponses: 9
    Dernier message: 02/11/2010, 15h32
  5. Malloc et grandes tailles
    Par Enthalpix dans le forum C
    Réponses: 5
    Dernier message: 27/06/2008, 09h48

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