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

  FORUM HardWare.fr
  Programmation
  C

  Redimensionner un tableau de pointeurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Redimensionner un tableau de pointeurs

n°612603
ant-103
Posté le 15-01-2004 à 15:07:30  profilanswer
 

Alors en fait j'utilise un tableau de pointeurs que je redimensionne selon mes besoins ( tjs en l'agrandissant ), au début il a une taille de 6 puis je l'augmente de 3 en 3 mais mon problème est que les 6 premières cases marchent mais ensuite ça plante... voilà le code de redimension, est ce que j'oublie qqchose?
 

Code :
  1. if( *nbm == *tailleL )
  2. {
  3. liste = ( char** ) malloc ( *tailleL + 3 );
  4. *tailleL = *tailleL + 3;
  5. }
  6. liste[*nbm] = strdup(mot);
  7. *nbm = *nbm + 1;


 
nbm c le nbr de mots rentrés dans le tableau, tailleL c la taille actuelle. Je me demande en fait si il ne manque pas un free là dedans

mood
Publicité
Posté le 15-01-2004 à 15:07:30  profilanswer
 

n°612614
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-01-2004 à 15:10:15  profilanswer
 

je comprends rien à ton truc !  
pourquoi tu déréférences nbm si c'est une simple variable ? (ie pas un pointeur)


Message édité par Harkonnen le 15-01-2004 à 15:10:36

---------------
J'ai un string dans l'array (Paris Hilton)
n°612625
ant-103
Posté le 15-01-2004 à 15:13:35  profilanswer
 

si en fait c dans une fct... c pour ça... en gros si tu préfères
ça donne ça si c t dans le main...
 

Code :
  1. if( nbm == tailleL )
  2. {
  3.     liste = ( char** ) malloc ( tailleL + 3 );
  4.     tailleL = tailleL + 3;
  5. }
  6.   liste[nbm] = strdup(mot);
  7.   nbm = nbm + 1;

n°612644
blackgodde​ss
vive le troll !
Posté le 15-01-2004 à 15:21:23  profilanswer
 

ouais ... euh ... je crois voir que tu vas perdre tous les pointeurs de ta liste existante, en plus d'avoir une fuite de mémoire par la non-libération de la mémoire de l'ancienne suite
 

Code :
  1. liste[nbm] = strdup(mot); 
  2.     nbm = nbm + 1;


 
puis j'ai pas trop compris ...
 
documente toi sur realloc si jme souviens bien pour éviter la fuite de mémoire

n°612658
ant-103
Posté le 15-01-2004 à 15:24:27  profilanswer
 

donc fo que je recopie le tableau de pointeurs avant je pense...

n°612668
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-01-2004 à 15:28:22  profilanswer
 

pas la peine, Blackgoddess a raison, l'utilisation de realloc() te permet de redimensionner un tableau sans perdre son contenu
 
http://www.opennc.org/onlinepubs/7 [...] alloc.html


---------------
J'ai un string dans l'array (Paris Hilton)
n°612671
ant-103
Posté le 15-01-2004 à 15:29:47  profilanswer
 

merci

n°612673
Taz
bisounours-codeur
Posté le 15-01-2004 à 15:30:10  profilanswer
 

man realloc

n°612676
ant-103
Posté le 15-01-2004 à 15:34:18  profilanswer
 

question idiote... qqun connait le code source de cette fct? car com on la pa vu en cours je vais éviter d'y faire appel directemetn

n°612697
Taz
bisounours-codeur
Posté le 15-01-2004 à 16:05:14  profilanswer
 

une bonne implémentation est trop liée à l'implémentation de l'allocateur mémoire, c'est un peu au dessus de ton niveau.
 
une implémentation triviale et indépendante est un malloc + memcpy + free

mood
Publicité
Posté le 15-01-2004 à 16:05:14  profilanswer
 

n°612719
ant-103
Posté le 15-01-2004 à 16:37:55  profilanswer
 

ah oui... euh... bon je vais me débrouiller pour faire une copie dans un tableau temporaire avant de faire un free, de réallouer et de recopier. merci

n°612723
Taz
bisounours-codeur
Posté le 15-01-2004 à 16:45:33  profilanswer
 

pourquoi tu veux pas utiliser realloc ?

n°612730
ant-103
Posté le 15-01-2004 à 16:49:32  profilanswer
 

parceque je pense que mes profs sont des gens rigides qui n'aiment pas que l'on utilise des trucs quand on l'a pas vu en cours... oui je trouve ça con... mais je peux pas y changer grand chose... g déjà essayé et je me suis fait traiter d'enfoiré lol

n°612739
e-v-tooms
Posté le 15-01-2004 à 16:57:14  profilanswer
 

iut paris V par hasard ? [:al zheimer]

n°612740
Taz
bisounours-codeur
Posté le 15-01-2004 à 16:57:23  profilanswer
 

c'est nimporte quoi. voir malloc et free sans realloc, c'est débile

n°612742
ant-103
Posté le 15-01-2004 à 16:58:34  profilanswer
 

LOL oui... et c Meunier qui mène les insultes ;) je vois que c connu...
 
oui taz suis d'accord !

n°612744
Taz
bisounours-codeur
Posté le 15-01-2004 à 17:04:06  profilanswer
 

je crois que le pire pour moi c'est que vous vous laissiez faire

n°612745
e-v-tooms
Posté le 15-01-2004 à 17:05:51  profilanswer
 

je suis sympa c'est la fonction vu en td qui sert a grossir le tableau dynamique ;)
 

Code :
  1. machinchose ** grossir (struct machinchose **Tab, int *taille)
  2. {
  3. machinchose **tmp;
  4. int i,nb;
  5. nb= *taille;
  6. *taille +=3;
  7. tmp = (machinchose **) malloc (*taille * sizeof (machinchose*));
  8. for (i=0;i<nb;i++) tmp[i] = Tab[i];
  9. free (Tab);
  10. return (tmp);
  11. }


Message édité par e-v-tooms le 15-01-2004 à 17:41:43
n°612747
ant-103
Posté le 15-01-2004 à 17:07:25  profilanswer
 

lol bah bien sûr, menons la rebellion contre le côté obscur ;)
 
non je pense qu'il faut se mettre dans le moule accepter le fait que l'on veuille d'abord savoir le faire nous même puis nous filer la fct qui le fait toute seule. Je pense que ça a du bon car perso g fait l'experience en MIAS du "utilisez ce que vous voulez" et celà dès le début et ça a été un bordel monstre!

n°612748
ant-103
Posté le 15-01-2004 à 17:08:01  profilanswer
 

Merci E-v-tooms...
 
T à l'IUT là ou c des archives ?

n°612750
Taz
bisounours-codeur
Posté le 15-01-2004 à 17:08:50  profilanswer
 

mais biensur ... quand on voit le code de ev, je préfère qu'il utilise n'importe qoi plutot que ça

n°612751
e-v-tooms
Posté le 15-01-2004 à 17:09:55  profilanswer
 

taz a écrit :

mais biensur ... quand on voit le code de ev, je préfère qu'il utilise n'importe qoi plutot que ça


 
mdr je le prends pas pour moi :sol: , c'est un prof qui nous a filé sa

n°612752
Tetedeienc​h
Head Of God
Posté le 15-01-2004 à 17:13:27  profilanswer
 

Moi, j'utiliserai realloc et je dirai "ben, le but, c'est aussi de nous familiariser a linux nan ? Alors, j'ai RTFM avec man realloc..."

n°612755
ant-103
Posté le 15-01-2004 à 17:16:46  profilanswer
 

oula ! attention! Linux! ils vont te dire "on va fait travailler sur des postes NT200 avec VC++ dessus com compilateur C vous vous égarez! 0 allez hop!" tu les connais pas ces gens là ;)

n°612777
blackgodde​ss
vive le troll !
Posté le 15-01-2004 à 17:37:10  profilanswer
 

ah parce que sous NT/2000 avec VC++ realloc il connait pas peut-etre ?
 
(il sert a quoi nb ? un coup du utilise *taille et le coup d'apres nb ? sinon 'Gmots **tmp;' ca devrait pas etre 'machinchose ** tmp;' plutot ?)


---------------
-( BlackGoddess )-
n°612781
e-v-tooms
Posté le 15-01-2004 à 17:42:23  profilanswer
 

BlackGoddess a écrit :

ah parce que sous NT/2000 avec VC++ realloc il connait pas peut-etre ?
 
(il sert a quoi nb ? un coup du utilise *taille et le coup d'apres nb ? sinon 'Gmots **tmp;' ca devrait pas etre 'machinchose ** tmp;' plutot ?)


 
sisi c'est machin chose j'ai oublié de le changer :D
 
puis nb est necessaire, regarde: imaginons la taille a l'origine est de 6, tu lui ajoute 3 ce qui fait taille=9, mais quand tu recopies le tableau dans le tableau temporaire, il n'y a toujours que 6 elements a recopier


Message édité par e-v-tooms le 15-01-2004 à 17:46:11
n°612799
ant-103
Posté le 15-01-2004 à 18:13:08  profilanswer
 

@BlackGoddess : si bien sur que realloc existe sous W2K mais l'explication de pkoi je peux pas l'utiliser est plus haut...

n°612802
Taz
bisounours-codeur
Posté le 15-01-2004 à 18:16:42  profilanswer
 

realloc est ANSI

n°612893
blackgodde​ss
vive le troll !
Posté le 15-01-2004 à 19:20:09  profilanswer
 

e-v-tooms oui pardon j'avais mal lu


---------------
-( BlackGoddess )-
n°613181
LeGreg
Posté le 16-01-2004 à 04:36:47  profilanswer
 

en meme temps s'il a un pb pour coder un realloc (meme "naif" )
c'est a craindre qu'il n'aura pas appris grand chose dans son cours de C.
Donc +1 pour qu'il recode un truc qui marche sans s'appuyer sur realloc.
 
LeGreg

n°614876
el muchach​o
Comfortably Numb
Posté le 18-01-2004 à 15:51:35  profilanswer
 

D'un autre coté, c'est une manie bien française (peut-être pas seulement française d'ailleurs) que de recoder - mal - des fonctions qui existent déjà dans les librairies standard. Je ne crois pas avoir jamais vu un projet où des fonctions qui se trouvent en standard dans la lib ANSi n'aient été recodées. Avec des bugs bien sûr.
 
Je me souviens d'un projet où 3 ingénieurs ont été assignés pendant 4 semaines à chercher un bug lié à la mémoire dans un système embarqué. Ils soupçonnaient un soft qui avait été acheté à une boîte asiatique sans accès au code source, et qui avait déjà démontré une fiabilité pas vraiment exemplaire par le passé. Donc ils pourrissaient assez copieusement leurs collègues asiatiques au téléphone, avant de finir par se rendre compte que le bug était tapi depuis des lustres dans un strcpy roulé sous les aisselles par la boîte française. La tronche qu'ils tiraient quand ils ont dû expliquer aux asiatiques que cette fois-ci, le bug était bien chez eux...
 
Dans un autre projet en C++, un type avait cru bon de définir TRUE à 0 et FALSE à 1. Du vrai sabotage.


Message édité par el muchacho le 18-01-2004 à 15:59:01
n°614894
blackgodde​ss
vive le troll !
Posté le 18-01-2004 à 17:15:17  profilanswer
 

mdr :D

n°615216
LeGreg
Posté le 19-01-2004 à 00:04:03  profilanswer
 

el muchacho a écrit :

D'un autre coté, c'est une manie bien française (peut-être pas seulement française d'ailleurs) que de recoder - mal - des fonctions qui existent déjà dans les librairies standard. Je ne crois pas avoir jamais vu un projet où des fonctions qui se trouvent en standard dans la lib ANSi n'aient été recodées. Avec des bugs bien sûr.


 
je te parle pas d'un projet industriel
mais d'un truc d'apprentissage.
dans ma scolarité j'ai du reprogrammer un mini shell.
Evidemment il était plus pourri que ceux qui existaient
mais le but cétait pas de renommer l'executable du shell et de le filer au prof.
 
A+
LeGreg

mood
Publicité
Posté le   profilanswer
 


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

  Redimensionner un tableau de pointeurs

 

Sujets relatifs
[HTML/JS] charger la partie centrale d'un site (en tableau)XHTML1.1 Centrer un tableau
Remplir un tableau de nombres flottants avec une certaine valeurMettre une frame dans un tableau
[PHP] redimensionner une image ?[VB] remplir base access à partir d'un tableau excel
[PHP/Mysql] enregistrer tableau dans bddhelp tableau en html
Problème de tableauSelection dans un tableau...
Plus de sujets relatifs à : Redimensionner un tableau de pointeurs


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