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

 


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

Allocation dynamique d'un tableau à 2 dimensions

n°749928
Taz
bisounours-codeur
Posté le 03-06-2004 à 01:30:05  profilanswer
 

Reprise du message précédent :
et voilà ... et après, on se retrouve avec des débutants qui sortent des
 

Code :
  1. double mat[500][500];

mood
Publicité
Posté le 03-06-2004 à 01:30:05  profilanswer
 

n°749966
vivelec
Posté le 03-06-2004 à 01:47:25  profilanswer
 

Taz a écrit :

et voilà ... et après, on se retrouve avec des débutants qui sortent des
 

Code :
  1. double mat[500][500];




Ca ne fait que 2 Mo de ram.
Où est le mal vis à vis de windaube ?

n°749968
Taz
bisounours-codeur
Posté le 03-06-2004 à 01:48:44  profilanswer
 

que ça poutre sérieusement ta pile :o

n°749985
vivelec
Posté le 03-06-2004 à 01:59:21  profilanswer
 

Taz a écrit :

que ça poutre sérieusement ta pile :o


Ok. Dis-moi, quelle est ton expérience du multi-threads ? Nulle ?
Je m'en doutais.

n°749986
Taz
bisounours-codeur
Posté le 03-06-2004 à 02:00:55  profilanswer
 

c'est marrant comment tu nous dis tout et son contraire [:joce]

n°749999
vivelec
Posté le 03-06-2004 à 02:16:05  profilanswer
 

Taz a écrit :

c'est marrant comment tu nous dis tout et son contraire [:joce]


Mouais,
C'est marrant, parqce que à t'entendre parler, ça pourrait choquer n'importe quelle oreille.
En fait, tu as tout à fait ta place dans l'industrie, celle, notamment, d'enculer les mouches avec tact.
Chose pas facile, s'il en est.
Cependant, sors un peu de ton linux.

n°750040
Carol Poul​in
Posté le 03-06-2004 à 04:04:50  profilanswer
 

vivelec a écrit :

Mouais, mais pourquoi pas int tab [k][n] ?
Le malloc, faites-en ce que voulez, mais là, franchement, c'est pas utile.


 
Un petit mot pour faire cesser la chicane j'ai demander une question sur le malloc, mais c'est évidant que  

Code :
  1. int k = 3;
  2. int n = 3;


sont la seulement pour tester la fonction par la suite je ferai peut-être un scanf ()
 

n°750041
Carol Poul​in
Posté le 03-06-2004 à 04:08:04  profilanswer
 

leneuf22 a écrit :

Un ptit coup de C99 peut-être ?

Code :
  1. int (*tab)[n] = malloc(k * n * sizeof(int));


 
Et là t'as un magnifique tableau prêt à l'emploi (cool le C99 hein ?)


 
Qu'est que le C99?

n°750056
Enidan
Posté le 03-06-2004 à 08:10:41  profilanswer
 

Taz a écrit :

que ça poutre sérieusement ta pile :o


 
Question :
Justement, quelles sont les règles pour choisir entre la pile ou l'allocation dynamique ?
Je fais pas trop la différence car le tout va en RAM  :D

n°750057
Taz
bisounours-codeur
Posté le 03-06-2004 à 08:11:05  profilanswer
 
mood
Publicité
Posté le 03-06-2004 à 08:11:05  profilanswer
 

n°750062
thermoclin​e
Geek intelligent
Posté le 03-06-2004 à 08:23:55  profilanswer
 

enidan a écrit :

Question :
Justement, quelles sont les règles pour choisir entre la pile ou l'allocation dynamique ?
Je fais pas trop la différence car le tout va en RAM  :D


 
A peu pres deux principes:
-je ne sais pas quel quantite de donnees je dois traiter,
 il faudra employer des variables en allocation dynamique
-je vais devoir consacrer une quantite de memoire importante (comparativement aux "standards" actuels) sur quelques donnees, mieux vaut les stocker en allocation dynamique.
 
 
Quasiment tout le reste doit se faire en statique.
 
Comme le dit vivelec, toute allocation dynamique doit etre justifiee meme si ses propos sont carrement excessifs.

n°750067
Enidan
Posté le 03-06-2004 à 08:31:00  profilanswer
 

Merci de ta réponse :)
 

thermocline a écrit :


-je ne sais pas quel quantite de donnees je dois traiter,
 il faudra employer des variables en allocation dynamique


D'accord
 

thermocline a écrit :


-je vais devoir consacrer une quantite de memoire importante (comparativement aux "standards" actuels) sur quelques donnees, mieux vaut les stocker en allocation dynamique.


Pourquoi ?
Par exemple, j'ai une fonction qui travaille sur un méga tableau dont je connais la taille : pourquoi en pas le mettre en pile ?
 

n°750069
Taz
bisounours-codeur
Posté le 03-06-2004 à 08:32:33  profilanswer
 

parce que ta pile elle va péter, tu vas même pas t'en rendre compte

n°750071
Enidan
Posté le 03-06-2004 à 08:34:26  profilanswer
 

Comment je la connais, la limite de ma pile ?
C'est empirique ?

n°750075
Taz
bisounours-codeur
Posté le 03-06-2004 à 08:38:40  profilanswer
 

ça dépend de ton système

n°750093
Enidan
Posté le 03-06-2004 à 09:01:25  profilanswer
 

Je précise ma question : je pense bien que ça dépend du système mais est-ce que le programmeur a accès à cette info par une routine quelconque ?
Ou alors, on programme "au bon sens", cad au-delà de x Ko, je pense (ou bien j'ai lu dans les docs) que ça ne passera plus sur les systèmes qui m'intéressent ?

n°750123
Joel F
Real men use unique_ptr
Posté le 03-06-2004 à 09:22:39  profilanswer
 

vivelec a écrit :

Ok. Dis-moi, quelle est ton expérience du multi-threads ? Nulle ?
Je m'en doutais.


 
il dit qu'il voit pas le rapport ...  :heink:

n°751142
leneuf22
Posté le 03-06-2004 à 17:29:11  profilanswer
 

Hé, on avait demandé une allocation avec un malloc; ben le code que j'ai posté c'est ça, après oui on peut bien faire la version pile.
 
Taz : mon pointeur de tableau, même si n est énorme, il en fera que 4 octets. sizeof tab est défini à la compilation, mais sizeof *tab ne l'est pas.
Ça fonctionne comme un typedef dynamique : tout sera calculé à l'exécution -> la pile ne sera jamais surchargée
 
rits75 : free(tab); libèrera tout le tableau aussi : 1 malloc <=> 1 free.


Message édité par leneuf22 le 03-06-2004 à 17:31:10
n°751147
Taz
bisounours-codeur
Posté le 03-06-2004 à 17:34:56  profilanswer
 

ah oui, je me suis emmélé les pinceaux là effectivement.
merci


Message édité par Taz le 03-06-2004 à 17:42:13
n°755396
bad11
Posté le 07-06-2004 à 20:30:25  profilanswer
 

Citation :


Pourquoi ?
Par exemple, j'ai une fonction qui travaille sur un méga tableau dont je connais la taille : pourquoi en pas le mettre en pile ?


 
 
Imagine que tu as un struct étudiant contenant chacun leur Nom.
Des étudiants, tu en a 2 000 étudiants, tu connais pas la taille de leur nom de famille : 2 solutions :
=> Tableau de 51 caracteres par structure pr etre sur de tous avoir leur nom en entier.
Petit calcul : 2 000 * 51 * 2 = 204 000 octets
=> Un seul tableau de 51 caracteres et les autres passé en dynamiques avec des malloc, (par strcpy tu les insere dans ton tableau dynamique).
Prenons 15 lettres par nom de familles en moyenne.
Petit calcul : 2000 * 15 * 2 + 51 = 60 000 octets.
 
Je te laisse comprendre l'utilité :)


Message édité par bad11 le 07-06-2004 à 20:31:21
n°755405
Taz
bisounours-codeur
Posté le 07-06-2004 à 20:35:04  profilanswer
 

ou alors tu utilises une base de données ... mais bon, c'est pas très parlant numériquement ton exemple, je préferais preque la première pour limiter un peu la fragmentation mémoire

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Remplacer un tableau par des div... Height 100% ??[C] définition d'une structure dynamique
[Perl] Regular expression "dynamique"conversion adresse de tableau de pointeurs
Parcourir un tableau à colonnes variablesproblème de menu dynamique
sauver un tableau de short dans un format d'imageefacer les caractere d'un tableau de char
Problème de tableau dynamiquephp et allocation dynamique de tableau a 2 dimensions
Plus de sujets relatifs à : Allocation dynamique d'un tableau à 2 dimensions


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