C ANSI allocation dynamique de tableau

cs_pedu Messages postés 4 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 3 juillet 2003 - 27 mai 2003 à 00:56
cs_payen Messages postés 252 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 1 mai 2005 - 28 mai 2003 à 09:48
Ce petit pro beug en sortie, pourquoi et que faire ?

#include <stdio.h>
#include <stdlib.h>

int (*pi)[1][1]; /* pointeur sur un tableau d'entiers */

void main(void)
{
unsigned int taille; /* taille du tableau (non connue
à la compilation). */
int i, j;
printf("Entrez la taille du tableau : ");
scanf("%u",&taille);
pi = (int (*)[1][1]) malloc(taille * sizeof(int)*1*1);

for(i=0; i<(((int)taille)*1); i++)
{
for(j=0; j<(((int)taille)*1); j++)
{
*(pi[i][j]) = 0;
}
}

for(i=0; i<(((int)taille)*1); i++)
{
for(j=0; j<(((int)taille)*1); j++)
{
printf("%d\t", *(pi[i][j]));
}
printf("\n");
}

/* libere le pointeur */
free(pi);
}

4 réponses

cs_payen Messages postés 252 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 1 mai 2005
27 mai 2003 à 12:04
tu cherches a faire quoi la???? une allocation dynamique d'un tabeau a 2 dimensions??? Si oui (c'est du C++, il te reste plus qu'a adapter) :

template <class T> T** CIM<T>::Alloue(int nbl,int nbc)
{
const type_info& typeInfo=typeid(T);
const char* nomType=typeInfo.name();

cout << "Type de donnees : " << nomType << endl;
getchar();
if (nbl 0 || nbc0)
return (T **)0;

image = new T * [nbl];
if (image == 0)
{
cout << "Echec lors de l'allocation memoire!!!" << endl;
return (T **)0;
}
for (int i=0;i<nbl;i++)
{
image[i] = new T [nbc];
if (image[i] == 0)
{
for (int j=0;j void CIM<T>::Desalloue(int nbl)
{
if (image != NULL)
{
for (int i=0;i<nbl;i++)
delete[] image[i];
delete[] image;
image = NULL;

cout << "Desallocation de " << nbl*NBC*sizeof(T) << " octets.\n" << endl;
}
else
cout << "Memoire deja desallouee!!!" << endl;
}

C'est des methodes d'une classe template, faut pas que ca t'effraie : tu t'interesses aux new et aux delete (remplaces par malloc et delete ...)
0
cs_payen Messages postés 252 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 1 mai 2005
27 mai 2003 à 12:05
faut a voir declare un **image quelquepart!!!
0
cs_nEUrOne Messages postés 41 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 14 avril 2004
28 mai 2003 à 08:49
pi = (int ***)malloc(taille * sizeof(*pi));
0
cs_payen Messages postés 252 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 1 mai 2005
28 mai 2003 à 09:48
ca c'est vraiment n'importe quoi nEUrOne!
0
Rejoignez-nous