Rechercher : dans
Par :

C liberer pointeur structure

Dernière réponse le 25 mai 2003 à 23:32:08 jeremie, le 25 mai 2003 à 21:53:18 
 Signaler ce message aux modérateurs

Bonsoir, comment fais ton en C pour liberer un pointeur de structure
free(P_STRUCT);
genere une erreur du debbugeur "failure assertrion failed"
merci de votre aide
jeremie
jerelium@free.fr

Meilleures réponses pour « C liberer pointeur structure » dans :
Libérer de l'espace sur la partition système VoirVotre disque dur comporte deux partitions, une pour le système et l'autre pour les données et vous constatez que la partition système est quasi pleine alors que l'autre a encore beaucoup d'espace libre. Vous pouvez bien sûr redimensionner vos...
Les files en langage C VoirLes files - Premier Entré Premier Sorti Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la file IV. Opérations sur les files A. Initialisation B. Insertion d'un élément dans la file C. Oter un...
Les structures en langage C++ VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...
Langage C - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...

1

pouet, le 25 mai 2003 à 23:11:59

Bonsoir,

pour etre sur qu on se comprend, je precise qu on ne libere pas le pointeur, mais l espace memoire pointe par celui-ci.
a par ca, c est bien free (P_STRUCT), si
ma_struct *P_STRUCT;
question a deux centimes d euros:
tu as bien "malloque" le pointeur?

--
pouet

Répondre à pouet

2

jeremie, le 25 mai 2003 à 23:17:04

Oue c'est bien declarer comme ça:
...
ma_structure PTR_S;
PTR_S)(ma_structure*)malloc(sizeof(ma_structure));
...
free(PTR_S);
...

Répondre à jeremie

3

pouet, le 25 mai 2003 à 23:23:43

Et bien en dessous de
PTR_S)(ma_structure*)malloc(sizeof(ma_structure));
tu fais:
assert(PTR_S);
ensuite ce cast est inutile.
et au dessus
de free(PTR_S);
tu fais:
assert(PTR_S);
il faut toujours tester que le retour d un malloc n est pas NULL.
a part ca le code poste est bon.

--
pouet

Répondre à pouet

4

jeremie, le 25 mai 2003 à 23:26:36

Bin le code du malloc est tester et il est pas NULL sinon ça arrete le programme
mais assert c pour faire quoi stp?
merci
jeremie

Répondre à jeremie

6

pouet, le 25 mai 2003 à 23:29:04

Guillaume@fallen:~$ man assert
Reformatting assert(3), please wait...
ASSERT(3) Linux Programmer's Manual ASSERT(3)

NAME
assert - abort the program if assertion is false

SYNOPSIS
#include <assert.h>

void assert(int expression);

DESCRIPTION
assert() prints an error message to standard output and terminates the program by calling abort() if expression is false (i.e., compares equal to zero).
This only happens when the macro NDEBUG was undefined when <assert.h> was last included.


tu travailles sans le man? tu fais comment pour survivre? :-O

--
pouet
mauvais OS, changer d OS

Répondre à pouet

5

jeremie, le 25 mai 2003 à 23:28:11

Etc dans quel .h assert()??
merci

Répondre à jeremie

7

 jeremie, le 25 mai 2003 à 23:32:08

...et le miracle ce fut :)

merci bien Mista Pouet

Répondre à jeremie