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

  FORUM HardWare.fr
  Programmation
  C++

  La taille maximum d'un tableau en C ?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

La taille maximum d'un tableau en C ?

n°424829
get@fix
Posté le 12-06-2003 à 12:21:55  profilanswer
 

Ma question est simple, je sais qu'il y a une limite à la taille d'un tableau fixe en C, mais quelle est elle ?

mood
Publicité
Posté le 12-06-2003 à 12:21:55  profilanswer
 

n°424837
Taz
bisounours-codeur
Posté le 12-06-2003 à 12:29:56  profilanswer
 

ça dépend de ton système qui détermine la taille de ta pile
la norme ansi prévoit juste que la taille de la pile doit etre au moins de 0x3fff octets si je dis pas de conneries...
 
enrgèle générale,  
 
double t[512][512]; est une mauvaise idée (512*512*8 => 2Mo direct)

n°427469
LeGreg
Posté le 14-06-2003 à 11:38:29  profilanswer
 

++Taz a écrit :


double t[512][512]; est une mauvaise idée (512*512*8 => 2Mo direct)


 
Deux mega c'est pas beaucoup.
En plus je vois pas ou il a parlé d'allouer son tableau sur la pile ??
 
Sinon Get@Fix un tableau
est de la taille que tu veux en C, la norme ne prevoit rien
en general c'est la taille de la memoire de ton systeme
qui limite ce que tu peux allouer (plus les mecanismes d'extension de la memoire swappee depuis le disque dur). Evidemment il faut eviter d'allouer les gros tableaux sur la pile mais j'espere que personne n'aurait cette idee saugrenue :D.
 
LeGreg

n°427473
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 14-06-2003 à 11:48:58  profilanswer
 

legreg a écrit :


 
Deux mega c'est pas beaucoup.
En plus je vois pas ou il a parlé d'allouer son tableau sur la pile ??


 
Encore faut-il savoir que quand tu fais "double t[512][512];", ça l'alloue sur la pile...


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°427474
LeGreg
Posté le 14-06-2003 à 11:51:18  profilanswer
 

Tetragrammaton IHVH a écrit :


Encore faut-il savoir que quand tu fais "double t[512][512];", ça l'alloue sur la pile...


 
1- c'est Taz qui alloue des tableaux sur la pile
2- je vois pas les brackets de fonctions donc je peux pas en deduire dans quel pool il a alloue. Si c'est dans un corps de classe (ou de struct si on en en C), c'est encore moins clair.
3- quand je vois la question originale et vos deux reponses, je me dis: ok c'est une erreur de debutant d'allouer deux megas sur la pile mais c'est pas possible que deux programmeurs aussi experimentes pensent que ca puisse etre une demande legitime..
 
LeGreg


Message édité par LeGreg le 14-06-2003 à 11:53:03
n°427475
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 14-06-2003 à 11:55:47  profilanswer
 

legreg a écrit :


 
1- c'est Taz qui alloue des tableaux sur la pile
2- je vois pas les brackets de fonctions donc je peux pas en deduire dans quel pool il a alloue. Si c'est dans un corps de classe (ou de struct si on en en C), c'est encore moins clair.
3- quand je vois la question originale et vos deux reponses, je me dis: ok c'est une erreur de debutant d'allouer deux megas sur la pile mais c'est pas possible que deux programmeurs aussi experimentes pensent que ca puisse etre une demande legitime..
 
LeGreg


 
dans le message de getafix : "une limite à la taille d'un tableau fixe en C" : en langage de newb, ça correspond à faire "double t[5000000];" et donc l'alouer sur la pile. Point barre.
 


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°427476
LeGreg
Posté le 14-06-2003 à 11:56:54  profilanswer
 

Tetragrammaton IHVH a écrit :


dans le message de getafix : "une limite à la taille d'un tableau fixe en C" : en langage de newb, ça correspond à faire "double t[5000000];" et donc l'alouer sur la pile. Point barre.


 
ah ben ca va aller loin cette discussion...
 
LeGreg
 

n°427477
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 14-06-2003 à 12:00:31  profilanswer
 

legreg a écrit :


 
ah ben ca va aller loin cette discussion...
 


 
note qu'elle a été rallongée grâce à ton intervention  [:xp1700]


Message édité par Tetragrammaton IHVH le 14-06-2003 à 12:06:41

---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°427479
LeGreg
Posté le 14-06-2003 à 12:03:21  profilanswer
 

Tetragrammaton IHVH a écrit :


note qu'elle a été rallongée grâce à ton intervention [:xp1700]


 
perrsonnellement je pense que je suis le seul a avoir apporte une info interessante qui est qu'il n'y a pas de limitation de taille des tableaux liee a la norme du C.
 
Apres dire qu'un tableau est systematiquement alloué
sur la pile par un noob et "point barre" c'est vraiment loin d'etre constructif.
 
LeGreg

n°427483
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 14-06-2003 à 12:06:24  profilanswer
 

legreg a écrit :


 
Apres dire qu'un tableau est systematiquement alloué
sur la pile par un noob et "point barre" c'est vraiment loin d'etre constructif.
 


 
si tu n'as pas compris la question de getafix, c'est pas une raison pour t'en prendre à moi [:spamafote] (toujours avoir son dico newb-français sous la main :D)


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
mood
Publicité
Posté le 14-06-2003 à 12:06:24  profilanswer
 

n°427523
Taz
bisounours-codeur
Posté le 14-06-2003 à 13:26:19  profilanswer
 

euh j'espere que personne n'aura confondu tableau et pointeur
 
2 mo c'est enorme, la pile n'est pas faite pour ça,  sur mon système j'ai limit" la taille de la pile à 8Mo


Message édité par Taz le 14-06-2003 à 13:27:30
n°427557
xav14
Posté le 14-06-2003 à 14:27:03  profilanswer
 

c'est quoi qui est alloué dans la pile ? et c'est quoi l'autre endroit ou on peut allouer ? (desole j'ai pas de bouquin de C qui explique  [:proy])

n°427558
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 14-06-2003 à 14:36:58  profilanswer
 

xav14 a écrit :

c'est quoi qui est alloué dans la pile ? et c'est quoi l'autre endroit ou on peut allouer ? (desole j'ai pas de bouquin de C qui explique  [:proy])


 
tas


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°427559
xav14
Posté le 14-06-2003 à 14:38:10  profilanswer
 


 
(arf c'est vrai) et comment on sait si on alloue dans la pile ou dans le tas ?

n°427560
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 14-06-2003 à 14:40:17  profilanswer
 

malloc/new/delete/free  :sarcastic:


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°427561
xav14
Posté le 14-06-2003 à 14:41:44  profilanswer
 

Tetragrammaton IHVH a écrit :

malloc/new/delete/free  :sarcastic:  


 
quand on fait tab[100], c'est alloué dans la pile alors ?  [:twixy]

n°427562
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 14-06-2003 à 14:43:22  profilanswer
 

"Dans le topic est contenue la réponse"


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°427565
xav14
Posté le 14-06-2003 à 14:50:51  profilanswer
 

Tetragrammaton IHVH a écrit :

"Dans le topic est contenue la réponse"


 
 
:jap: pour ces eclaircissements.
je croyais que c'était kifkif.


Message édité par xav14 le 14-06-2003 à 14:51:11
n°427638
Ace17
Posté le 14-06-2003 à 18:45:50  profilanswer
 

Tetragrammaton IHVH a écrit :


 
Encore faut-il savoir que quand tu fais "double t[512][512];", ça l'alloue sur la pile...


Meme si t est une variable globale?

n°427639
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 14-06-2003 à 18:47:53  profilanswer
 

Ace17 a écrit :


Meme si t est une variable globale?


 
Combien de fois faudra-t-il le répéter ?  :heink:  
 
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°427678
xWillow
Posté le 14-06-2003 à 20:30:36  profilanswer
 

c'est moi qui a dit ca l'autre jour, je voie que tu reprend ma phrase c'est style:)

n°427706
LeGreg
Posté le 14-06-2003 à 21:30:19  profilanswer
 

Tetragrammaton IHVH a écrit :


 
Combien de fois faudra-t-il le répéter ?  :heink:  
 
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
"Les variables globales c'est mal"
 


 
et les tableaux static on a le droit?
 
Et les tableaux membres d'une struct on a droit?
 
Et les tableaux membres static d'une classe (ok la c'est du C++) on a droit ?
 
LeGreg


Message édité par LeGreg le 14-06-2003 à 21:34:30
n°427711
LeGreg
Posté le 14-06-2003 à 21:33:06  profilanswer
 

l'avantage d'une tableau global
(oui j'en utilise) c'est qu'il
est alloué automatiquement a l'init
du programme et peut meme etre prerempli
avec des valeurs precises.
 
C'est comme ca qu'on peut inserer des ressources
complexes dans un programme en passant
par un compilateur de ressources par exemple.
(images, vertex shaders, etc..)
 
LeGreg

n°427719
Taz
bisounours-codeur
Posté le 14-06-2003 à 21:36:25  profilanswer
 

les variables globales en C, c'est pas un problème, c'est meme conseillé quand on sait ce qu'on fait (je parle par exemple des varaibles static / privée à l'unité de compilation

n°427723
LeGreg
Posté le 14-06-2003 à 21:40:26  profilanswer
 

xav14 a écrit :


quand on fait tab[100], c'est alloué dans la pile alors ?  [:twixy]  


 
pas systematiquement meme si des gens te disent le contraire.
 
Ca depend du scope de la declaration
en general si c'est a l'interieur d'un bloc de fonction
la pile est mise a contribution.
 
Si c'est en dehors d'un bloc de fonction, le tableau
sera alloué dans le segment data du programme
(dont la duree de vie est egale a celle du programme).
 
Si c'est dans le corps d'une structure, le pool
d'allocation sera le meme que celui de la struct.
Si la struct est dans le pool data alors le tableau y sera,
si la struct est dans la pile alors le tableau y sera etc..
 
LeGreg

n°427764
Taz
bisounours-codeur
Posté le 14-06-2003 à 22:52:05  profilanswer
 

si ça interesse quelqu'un j'ai une classe Array en partie repompée sur boost::array qui apporte un cht(i bout de métaprogrammation: en fonction de la taille du tableau (taille obtenue par sizeof), le tableau est soit implémentée en dur [N] soit par un appel à new

n°427766
blackgodde​ss
vive le troll !
Posté le 14-06-2003 à 23:08:43  profilanswer
 

Si c'est en dehors d'un bloc de fonction, le tableau
sera alloué dans le segment data du programme
(dont la duree de vie est egale a celle du programme).
 
(sous win32)
il me semblait que le segment de data etait de la mémoire allouée par le loader en lecture seule ?


---------------
-( BlackGoddess )-
n°429526
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 16-06-2003 à 16:25:10  profilanswer
 

++Taz a écrit :

les variables globales en C, c'est pas un problème, c'est meme conseillé quand on sait ce qu'on fait (je parle par exemple des varaibles static / privée à l'unité de compilation


 
C'est clairement à éviter comme l'a souligné tetra... dès que tu arrives à un soft à la taille plus que conséquente, c'est rapidement la merde....


---------------
Just drink it!
n°429586
Taz
bisounours-codeur
Posté le 16-06-2003 à 16:47:06  profilanswer
 

:non: tu sais ce que sais qu'une variable globale statique? un fonction déclarée statique?

n°429594
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 16-06-2003 à 16:50:51  profilanswer
 

Avais tu mentionné le mot "statique"? Je ne crois pas...


---------------
Just drink it!
n°429599
Taz
bisounours-codeur
Posté le 16-06-2003 à 16:54:23  profilanswer
 

++Taz a écrit :

les variables globales en C, c'est pas un problème, c'est meme conseillé quand on sait ce qu'on fait (je parle par exemple des varaibles static / privée à l'unité de compilation


 

n°429604
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 16-06-2003 à 16:59:06  profilanswer
 


 
ah merde sorry:D, j'avais pas tout lu:p... dans ce cas ok...


---------------
Just drink it!
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  La taille maximum d'un tableau en C ?

 

Sujets relatifs
[Perl] Utiliser un tableau d'une subroutineProblème avec un tableau HTML dynamique
[HTML] Cellule de tableau qui utilise la largeur restantetableau sans tableau en css ....
[PHP] Insertion d'un tableau dans un tableauProblème de tableau dynamique
probleme d'affichage tableau[perl] Créer un tableau à 2 dimensions
Passage d un tableau dans un formulaire ?Faire un tableau de constantes
Plus de sujets relatifs à : La taille maximum d'un tableau en C ?


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR