Tableau de taille trop importante

[Résolu]
Signaler
Messages postés
2
Date d'inscription
vendredi 9 août 2002
Statut
Membre
Dernière intervention
30 mai 2006
-
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
-
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

Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
1
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
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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
Messages postés
2
Date d'inscription
vendredi 9 août 2002
Statut
Membre
Dernière intervention
30 mai 2006

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
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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