Langage C allocation du mémoire(urgence)
Fermé
nguyen
-
28 janv. 2005 à 14:21
alicia85 Messages postés 68 Date d'inscription lundi 19 mai 2008 Statut Membre Dernière intervention 20 août 2009 - 28 mai 2008 à 11:05
alicia85 Messages postés 68 Date d'inscription lundi 19 mai 2008 Statut Membre Dernière intervention 20 août 2009 - 28 mai 2008 à 11:05
A voir également:
- Langage C allocation du mémoire(urgence)
- Langage ascii - Guide
- Mémoire vive - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Test memoire pc - Guide
10 réponses
Ravachol
Messages postés
566
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
30 octobre 2005
120
28 janv. 2005 à 15:15
28 janv. 2005 à 15:15
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 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++
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.
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.
Ravachol
Messages postés
566
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
30 octobre 2005
120
28 janv. 2005 à 16:07
28 janv. 2005 à 16:07
Tu peux donner un peu plus d'infos S.T.P. car là ça fait un peu short pour t'aider plus.
A++
A++
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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)
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
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.
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
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
slolo2000
Messages postés
315
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
29 mai 2007
48
3 févr. 2005 à 13:54
3 févr. 2005 à 13:54
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 ?
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 ?
alicia85
Messages postés
68
Date d'inscription
lundi 19 mai 2008
Statut
Membre
Dernière intervention
20 août 2009
28 mai 2008 à 11:05
28 mai 2008 à 11:05
bjr svp j ai besoin d allouer de l espace memoire a une chaine de caractere comment faire ? merci dans mon code on m envoie les erreurs de segmentation .violation d'acces
merci
merci