Tableau de taille trop importante

Résolu
samsagas01 Messages postés 2 Date d'inscription vendredi 9 août 2002 Statut Membre Dernière intervention 30 mai 2006 - 30 mai 2006 à 13:25
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 30 mai 2006 à 14:18
J'ai besoin d'un peu d'aide, je souhaite faire un programme untilisant une matrice (contenant les valeurs des pixels d'une image 600*800) et je n'arrive pas à la déclarer dans ma fonction principale (le programme crée une erreur en s'éxecutant), je ne peux que la déclarer avant "main()", comment faire ? J'utilise DevCpp.

Merci d'avance pour vos réponse.
Sam

5 réponses

turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
30 mai 2006 à 13:47
Fait ca dans un tableau linéaire par exemple:
unsigned short* matrice=(unsigned short*)malloc(sizeof(unsigned short)*600*800)

ou la meme chose avec un new si c'est du C++.

TuRn3r
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
30 mai 2006 à 13:44
Si je comprend bien, tu essais de mettre la taille 600*800 dans un tableau? Si oui, ne fais pas ça. Alloue la mémoire dynamiquement (malloc ou new)

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
samsagas01 Messages postés 2 Date d'inscription vendredi 9 août 2002 Statut Membre Dernière intervention 30 mai 2006
30 mai 2006 à 14:06
qu'est-ce qu'allouer la mémoire dynamiquement ? Je ne sais pas trop me servir du C, je suis débutant et autodidacte...
Merci pour ta réponse.
Sam
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
30 mai 2006 à 14:10
Oula bien dans ce cas je te suggere vivement de lire un peu d'information avant de te lancer la dedans.
http://c.developpez.com/cours/

Sinon on utilise malloc sur un pointeur comme ceci:

BYTE *test = (BYTE*)malloc(255);

Voila c'est comme si tu avait un tableau de 255 élément

Puis quand t'a plus besoin d'utiliser c'est donné, tu libère la mémoire avec free

free(test);

___________________________________________
Les plus grands esprits trouvent toujours une solution
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
30 mai 2006 à 14:18
Attention quand je dit que tu a un tableau de 255 élément. C'est vrai mais ce sont des valeurs BYTE. Ça ne vaut qu'un octet tout comme char (C'est la même chose). Si tu veut des valeurs plus grosse comme DWORD, il faut que tu fasse par exemple:

DWORD *valeur = (DWORD*)malloc(255*sizeof(DWORD));

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
Rejoignez-nous