Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2079 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

Taille maximale de tableau

n°904671
Tamahome
⭐⭐⭐⭐⭐
Posté le 22-11-2004 à 14:07:11  profilanswer
 

Reprise du message précédent :

red faction a écrit :

je suppose que c alloue a coup de malloc() ou de new, parce que mettre ca sur la pile ou en global c pas tres recommandé


 
C'est du C++ ca, pas du C... si tu programmes en mélangeant C et C++, pas étonnant que ca plante...


---------------
Hobby eien /人◕ ‿‿ ◕人\
mood
Publicité
Posté le 22-11-2004 à 14:07:11  profilanswer
 

n°904672
Tamahome
⭐⭐⭐⭐⭐
Posté le 22-11-2004 à 14:07:53  profilanswer
 

Taz a écrit :

#define N 72000
 
double tab1[N];
.....
double tabi[N];
.....
double tab20[N];  
 
 

va te pendre ...



 
[:rofl] [:rofl] [:rofl] [:rofl]


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°904674
Tamahome
⭐⭐⭐⭐⭐
Posté le 22-11-2004 à 14:10:57  profilanswer
 

GROFRED a écrit :

même si apparamment c'est "pure folie" ;-)


 
Pourquoi j'ai l'impression d'etre en face d'un sussu qui cite du Ton That  :??:


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°904676
el muchach​o
Comfortably Numb
Posté le 22-11-2004 à 14:11:16  profilanswer
 

GROFRED a écrit :

non non il accepte le tableau rempli...Concernant les allocations mémoire je pensais qu'écrire:
 
double TABMAX[72000];
 
ça permettait d'allouer la mémoire nécessaire une fois pour toute (dans l'hypothèse ou ç'est possible) et que malloc permet d'allouer dynamiquement de la mémoire c'est à dire pour moi agrandir la taille du tableau pendant l'exécution du prog. Dois-je comprendre que malloc "force" une allocation mémoire qui ne serait pas possible en faisant:
 
double TABMAX[72000];
 
?


Il te faut comprendre la différence entre pile et tas. Disons simplement que la pile a une taille limitée fixée à la compilation, et sert à stocker temporairemet les données locales aux fonctions. Au fur et à mesure des appels de fonctions, ces données locales s'empilent.
Le tas est au contraire un espace mémoire global que l'appli peut réserver.
Si tu fais  
int tab[100];
tu réserves sur la pile. Il faut être parcimonieux avec la pile, parce qu'il est facile de la saturer et il n'y a pas moyen de savoir si c'est le cas sauf d'attendre le plantage (qui ne tarde pas à arriver d'ailleurs).
Si tu fais int *tab = malloc(10000);
tu réserves sur le tas. tab est alors un pointeur qui contient l'adresse de début de l'espace réservé par malloc. L'avantage, c'est que si malloc retourne 0, tu sais que l'OS ne t'accorde pas la mémoire que tu as demandé (tu as dépassé la limite du possible à cet instant).
Mais par la suite, pour pouvoir utiliser cet espace, tu dois savoir utiliser les pointeurs.
 
ps : une donnée dite "locale" est une donnée dont l'espace mémoire est automatiquement déclaré comme réutilisable à la sortie d'un bloc, un bloc étant défini par un couple {...} (Donc une fonction définit un bloc).  
 
Autrement dit, dans le bloc suivant :
{
   int a = 3;
   short tab t[100];
   ...
}
a et tab sont alloués sur la pile. A la sortie du bloc, a et tab n'existent plus et toute tentative de les lire ou de les écrire sera une erreur à la compilation. Leur portée est locale au bloc.
 
Par contre si j'écris:
{
   double *tab = malloc(50*sizeof(double));
}
tab est alloué sur le tas et existe encore à la sortie du bloc jusqu'à ce qu'on écrtive free(tab). Sa portée est globale.
 
http://forum.hardware.fr/hardwaref [...] 6641-1.htm
http://www-igm.univ-mlv.fr/~desar/ [...] on/ch4.pdf
 
Pour en savoir plus :
http://www.enseignement.polytechni [...] 9/view.pdf


Message édité par el muchacho le 22-11-2004 à 14:38:34
n°904680
cris56
Posté le 22-11-2004 à 14:12:34  profilanswer
 

Tamahome a écrit :

C'est du C++ ca, pas du C... si tu programmes en mélangeant C et C++, pas étonnant que ca plante...


 
 
je pense qu'il disais ca parce qu'il ne sait pas si matlab est codé en c ou en c++

n°904685
Tamahome
⭐⭐⭐⭐⭐
Posté le 22-11-2004 à 14:15:02  profilanswer
 

cris56 a écrit :

je pense qu'il disais ca parce qu'il ne sait pas si matlab est codé en c ou en c++

ah, autant pour moi alors  [:skylight]


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°904695
GROFRED
Posté le 22-11-2004 à 14:31:01  profilanswer
 

Merci à cris56, el muchacho et Taz pour toutes ces remarques constructives...je vais approfondir ces histoires de piles et de tas...avant d'aller me pendre...Maintenant que je lis ça j'imagine vos tronches se déformer à la vue du
 
double TABMAX[72000];
 
Question écrire ça c'est pire:
 

Code :
  1. register double TABMAX[72000];


 
:-P

n°904698
Taz
bisounours-codeur
Posté le 22-11-2004 à 14:35:35  profilanswer
 

ben c'est pas notre faute si tu te documentes avec des conneries : ça fait des années que plus personne n'utilise ni register, ni autao

n°904699
el muchach​o
Comfortably Numb
Posté le 22-11-2004 à 14:36:39  profilanswer
 

GROFRED a écrit :

Merci à cris56, el muchacho et Taz pour toutes ces remarques constructives...je vais approfondir ces histoires de piles et de tas...avant d'aller me pendre...Maintenant que je lis ça j'imagine vos tronches se déformer à la vue du
 
double TABMAX[72000];
 
Question écrire ça c'est pire:
 

Code :
  1. register double TABMAX[72000];


 
:-P


Oublie les register. C'était utile à l'époque où les compilos ne savaient pas bien optimiser l'utilisation des registres. Aujourd'hui, il vaut mieux le laisser faire ce genre d'optims. Par contre, tu peux relire mon précédent post que j'ai étoffé.

n°904701
GROFRED
Posté le 22-11-2004 à 14:39:09  profilanswer
 

Taz a écrit :

ben c'est pas notre faute si tu te documentes avec des conneries : ça fait des années que plus personne n'utilise ni register, ni autao


 
Bah je voulais juste ajouter une connerie de +. Je me documente avec:
 
"langage c" de delannoy
"programmation en langage c" de la série schaum
"shaved"

mood
Publicité
Posté le 22-11-2004 à 14:39:09  profilanswer
 

n°904704
GROFRED
Posté le 22-11-2004 à 14:42:27  profilanswer
 

juste pour savoir où je mets les pieds...la majorité des forumeurs sont développeurs?


Message édité par GROFRED le 22-11-2004 à 14:42:53
n°904705
el muchach​o
Comfortably Numb
Posté le 22-11-2004 à 14:44:09  profilanswer
 

Disons que les habitués de la cat Prog, oui.

n°904711
Taz
bisounours-codeur
Posté le 22-11-2004 à 14:48:39  profilanswer
 

GROFRED a écrit :

Bah je voulais juste ajouter une connerie de +. Je me documente avec:
 
"langage c" de delannoy
"programmation en langage c" de la série schaum
"shaved"

Nul. Trouve le Kernighan&Ritchie Edition 2

n°904720
GROFRED
Posté le 22-11-2004 à 14:57:10  profilanswer
 

el muchacho a écrit :

Disons que les habitués de la cat Prog, oui.


 
Ok, pour moi qui n'en suis pas un (je pense que tout le monde l'avait compris) le chemin sera long et difficile pour savoir utiliser toutes ces notions. Je ne pensais pas que le C offrait toutes ces possibilités de gestion avancée. Je vois mieux maintenant pourquoi les auteurs parlent de langage de haut niveau avec des fonctionnalités de bas niveau...L'arsenal du C semble impressionnant. Bon je vais décortiquer de suite les liens que tu m'as donné.
 
:bounce:

n°904724
GROFRED
Posté le 22-11-2004 à 14:58:44  profilanswer
 

Taz a écrit :

Nul. Trouve le Kernighan&Ritchie Edition 2


 
:cry:
 
Ok je me trouve ça au + vite.
 

n°904736
Tamahome
⭐⭐⭐⭐⭐
Posté le 22-11-2004 à 15:11:17  profilanswer
 

GROFRED a écrit :

:cry:
 
Ok je me trouve ça au + vite.


 
On te conseille celui la, car c'est K&R qui ont inventé le C, donc autant prendre leur manuel, ca sera mieux  [:skylight]


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°904760
GROFRED
Posté le 22-11-2004 à 15:36:18  profilanswer
 

Tamahome a écrit :

On te conseille celui la, car c'est K&R qui ont inventé le C, donc autant prendre leur manuel, ca sera mieux  [:skylight]


 
Estonnes-moi que je vais le trouver. En plus ils ont écrit UNIX ce qui n'est pas une mince affaire...

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Passage d'un tableau de string vers du code non managé (DLL)tableau a double entrée en pascal
tableau fixe sur l'écranTransformer un int en String d'une taille spécifique
[C/C++] tableau dynamiqueTaille Image
Information de la taille de stack maximal [gnu]Firefox - étirer un <div> à la taille de son contenu
tableau dans un tableau[HTML] tableau de taille maximale pour un forum
Plus de sujets relatifs à : Taille maximale de tableau


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)