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 :

conversion d'un tableau a une dimension en un tab a 2 dimens


Sujet :

C++

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 421
    Points : 189
    Points
    189
    Par défaut conversion d'un tableau a une dimension en un tab a 2 dimens
    bonjour, voila, j'essaie de convertir un tab a une dimension en un tab a deux dimension, mais je ne sais pourquoi, ca plante a l'execution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    unsigned** m_mask;	
     
    unsigned* p = new unsigned[((m_picture->w)*(m_picture->h))/32]; 
    m_mask = (unsigned**)p;
     
     
    	for(int j = 0; j <m_picture->h/32;j++)
    		for(int i = 0; i<m_picture->w/32;i++)
    			m_mask[i][j]=0;  // caplante ici.
    je suppose que c'est parce qu'il ne connais pas la longueur d'un saut, mais comment lui dire??
    PS, ((m_picture->w)*(m_picture->h))/32 = a a peut pres 1500

    merci

    a+++

  2. #2
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    unsigned** m_mask;
    ........
    m_mask = (unsigned**)p;
    m_mask[i][j]=0;
    Ce transtypage est incorrect. Le contenu de m_mask ne peut etre l'adresse d'un pointeur. Lors de l'évaluation de m_mask[i], l'adresse calculée correspond à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     adresse(m_mask)+ i* sizeof(unsigned int*)
    puisque tu as déclaré que m_mask est un pointeur sur unsigned int*.
    m_mask[i], est du type unsigned int * et l'adresse de m_mask[i][j] est alors calculée à partir du contenu m_mask[i] (d'où le plantage)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    *(adresse( m_mask)+ i* sizeof(unsigned int*))+j*sizeof(unsigned int)
    Ce n'est pas du tout l'accès aux éléments du tableau 2D

    Fais toi même le calcul des adresses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p[Nombre de colonnes*i+j] = ...
    puisque tu ne peux pas créer directement un tableau 2D parce que les deux dimensions du tableau sont inconnues à la compilation
    Ou tu construis effectivement un tableau de pointeurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    unsigned** p = new (unsigned *)[nombre de lignes];
     p[0] =  new unsigned[nombre de lignes*nombre de colonnes];
     for(int i=1; i<nombre de lignes; i++) p[i] = p[0]+i*nombre de colonnes
    ....
    p[i][j] = ....
    .....
    delete[] p[0];
    delete[] p;
    Dernière remarque, ta boucle for ne correspond pas à la taille réservée pour ton tableau ( voir les divisions par 32)
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

Discussions similaires

  1. [ezPDF] Scinder un tableau ayant une dimension connue (en cm par exemple)
    Par biquet dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 12/05/2015, 10h28
  2. Réponses: 1
    Dernier message: 09/04/2012, 16h58
  3. Conversion d'un tableau PHP de dimension N en tableau JavaScript
    Par Invité dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 0
    Dernier message: 15/02/2011, 19h27
  4. Tableau string à une dimension
    Par Poulain dans le forum Windows Forms
    Réponses: 10
    Dernier message: 18/04/2008, 16h49
  5. insérer un tableau d'une dimension dans un tableau à deux dimensions
    Par johnny3 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 03/03/2008, 19h04

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