|
|
|
| langage C allocation du mémoire(urgence) par nguyen |
vendredi 28 janvier 2005 à 14:21:48 |
Salut,
C'est clair que si tu utilises "new" en C tu auras des pb ;-) Donc comme tu ne parles pas d'erreurs de compilation, je pense que tu dois très certainement compiler en C++. Dans ce cas il est fortement recommandé d'utiliser "delete" pour libérer ce qui a été alloué avec "new". A++ C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison! (COLUCHE) |
salut
Merci de ta réponse. J'ai utilisé C++ chez moi. J'ai déjà essayé avec delette et free; mais tous les deux ne marchent pas. |
Tu peux donner un peu plus d'infos S.T.P. car là ça fait un peu short pour t'aider plus.
A++ C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison! (COLUCHE) |
huh..
pourtant quand tu va compiler un fichier source ecrit en c++ tu devrais pas avoir d'erreur si t'as fais comme ceci : ... int *h1,h2; h1=new int; h2=new int; afficher(h1); //en supossant que la fonction est declarer comme void afficher(int *) delete h1; afficher(h2); delete h2; ... bon idéalement t'aurais aussi stocké des valeur dans h1 et h2 meheheh :P |
Slt
Merci de tous les réponses. C'est problème : ... int *h1,h2; h1=new int; h2=new int; afficher(h1); delete h1; // ici delete ne marche pas, le processeur réponse : faut proceseur afficher(h2); delete h2; // ici delette marche bien, sans problème ... C'est problème que si delete au milieu de programme, le complicateur est "mort" merci d'avance de vos réponses (c'est urgence) |
Bonjour
deux petites choses ton code ne doit pas très bien compiler: la variable h2 est déclarée en int et non int * Comment d'apercois tu que "ca ne marche pas"? Pour info, le delete ne réinitialise pas la valeur du pointeur. cdt |
Slt
C'est une faute d'écrit. je peux écrire int *h2; mais ce n'est pas problème. J'ai déjà essayé plusieus solutions. C'est problème que pour quoi je dois mettre delete ou free à la fin au programme. Si je mets au milieu, le complicateur réponse faut processeur. Merci de tous vos réponses. |
Bonjour
la règle est simple: si tu alloues avec malloc tu désalloues avec free (C) si tu alloues avec new tu désalloues avec delete (C++) Par contre si tu fais un free ou un delete sur un pointeur non valide (null ou déjà désalloué) ca explose... Par contre rien n'interdit de placer tes instructions ou tu veux dans ton programme. Peux tu indiquer exactement ton message d'erreur? Tu as un pb à la compilation ou à l'exécution? cdt |
Salut nguyen,
je ne vois pas bien où est ton problème. J'ai écrit ceci est ça marche très bien : #include <stdio.h> #include <stdlib.h> void afficher(int* c) { printf("Valeur : %d\n", *c); } int main(void) { int *h1,*h2; h1=new int; h2=new int; *h1 = 10; afficher(h1); //en supossant que la fonction est declarer comme void afficher(int *) delete h1; *h2 = 20; afficher(h2); delete h2; system("PAUSE"); return 0; } J'utilise Dev C++ comme compilateur. Quel est ton compilateur ? |
| 05/05 16h58 | [c]allocation memoire dans une fonction | Programmation | 16/12 17h51 | 8 |
| 22/01 11h34 | [langage C] probleme sur allocation memoire | Programmation | 09/02 14h24 | 3 |
| 15/07 10h40 | allocation de memoire en langage C:suite | Programmation | 17/07 11h39 | 1 |
| 12/07 16h01 | allocation de memoire en langage C | Programmation | 13/07 19h39 | 2 |