begin process at 2012 02 13 13:50:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Allocation dynamique tableau 2D : erreur de seg


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Allocation dynamique tableau 2D : erreur de seg

samedi 13 mars 2010 à 15:03:46 | Allocation dynamique tableau 2D : erreur de seg

noname001

Bonjour à tous,

j'aimerais faire appel à vos lumières concernant deux codes. Ils ont tous les deux pour but de créer un tableau 2D dynamiquement et d'ensuite l'initialiser avec des caractères vides ( ' ').

Voici le premier, qui lui fonctionne :
Code C/C++ :
#include <iostream>
using namespace std;

void intialisation(char **tableau)
{	
	// ON REMPLIT LE TABLEAU DE CASE VIDE
	for (int i=0; i<5 ; i++)
	{
		for(int j=0; j<5; j++)
		{
			tableau[i][j] = ' ';
		}
	}

}


int main()
{	
	
	char **tab;
	
	// CREATION TABLEAU DYNAMIQUEMENT
	tab = new char*[5];
	for (int i=0; i<5 ; i++)
	{
		tab[i] = new char[5];
	}

	intialisation(tab);

	return 0;
}


Et ensuite, le deuxième où la création dynamique du tableau a été placé dans la fonction création. Mais ce programme me donne une erreur de segmentation.
Code C/C++ :
#include <iostream>
using namespace std;

void intialisation(char **tableau)
{	
	// ON REMPLIT LE TABLEAU DE CASE VIDE
	for (int i=0; i<5 ; i++)
	{
		for(int j=0; j<5; j++)
		{
			tableau[i][j] = ' ';
		}
	}

}

void creation(char **tableau)
{
	// CREATION TABLEAU DYNAMIQUEMENT
	tableau = new char*[5];
	for (int i=0; i<5 ; i++)
	{
		tableau[i] = new char[5];
	}

}



int main()
{	
	
	char **tab;
	
	creation(tab);
	intialisation(tab);

	return 0;
}


Quelle est l'erreur du deuxième code ? Pourquoi le fait d'avoir placé la création du tableau dans une fonction à part fait-il foirer le programme (erreur de seg) ?

Merci pour votre aide!
mercredi 17 mars 2010 à 11:10:17 | Re : Allocation dynamique tableau 2D : erreur de seg

CptPingu

Administrateur CodeS-SourceS
Si tu es en C++, mieux vaut utiliser un std::vector<std::string> > qu'un char**.
Evite aussi les "using namespace" (voir [ Lien ]

Pour répondre à ta question, c'est tout simplement que tab est remplit localement dans la fonction creation. Donc tu perds son accès en dehors de la fonction. Il te faut retourner l'adresse de ce que tu as fait:

Code C/C++ :
char** creation()
{
	// CREATION TABLEAU DYNAMIQUEMENT
	char** tableau = new char*[5];
	for (int i=0; i<5 ; i++)
	{
		tableau[i] = new char[5];
	}
        return tableau;
}



int main()
{	
	
	char **tab;
	
	tab = creation();
	intialisation(tab);

	return 0;
}



_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
mercredi 17 mars 2010 à 13:19:21 | Re : Allocation dynamique tableau 2D : erreur de seg

noname001

Juste, je n'y avait pas pensé


Cette discussion est classée dans : int, erreur, tableau, for, char


Répondre à ce message

Sujets en rapport avec ce message

tableau char [ par dingue007 ] Voila je dois faire un prog en C++ : un tableau avec les mois de lannée et quand je tape un chiffre il me sort le mois ! mais je narrive pas a faire l C ANSI allocation dynamique de tableau [ par pedu ] Ce petit pro beug en sortie, pourquoi et que faire ?#include #include int (*pi)[1][1]; /* pointeur sur un tableau d'entiers */void main(void){ unsi Gestion d'entrées/sorties sur fichier [ par macrow ] Bonjour, Voici mon source : #include #include #include #include #include //******************************************** Problem Affichage de mon Tableau [ par Orezza ] salut à tous, j'ai un blem à l'affichage du tableau. l'utilisateur parametre son tableau, c lui qui l'initilize mais j'arrive pas à afficher apres le Tableau et char to int [ par Niníel ] Bonjour!J'ai un tableau: chTabStart[64] dans lequel je rentre un nombre dans le format suivant: d_25 pour un nombre décimale par exemple. Donc dans mo Création de 2 tableaux dynamik à 2D [ par flopflopp ] Bonjour, je voudrais soumettre un petit problème en C++, j'ai une simple fonction qui crée un tableau dynamique à 2 dimensions, le rempli avec des 1 e Retourner tableau 2d [ par ZogStriP ] J'ai une fonction qui retoure un tableau 2 dimension mais ça ne marche pas :int MultiMatrice(int Matrice1[2][2], int Matrice2[2][2]){ int MatriceRe Comment forcer le RTS pour une liaison RS232 [ par ancat ] Bonjourje viens de faire un petit prog (grandement inspire de sources du site) mais je ne saisis pas trop le controle du RTS.Celui ci est-il traite pa lister un tableau de string [ par minet03 ] Soyons bref, je suis en train de bosser sur un code qui liste les srting d'un tableau, seul problème c'est qu'il y a des problèmes !Voici mon code :vo Saisie chaines caractère en boucle en C [ par oim09 ] Voila alors j'ai rencontré un problème que je n'avai jamais rencontrer. Je veu faire une fonction qui rempli un tablaeu avec des chaines de caractères


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales