IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Garder des informations entre 2 appels de fonctions


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Garder des informations entre 2 appels de fonctions
    Bon, j'explique succinctement ce que je veux faire.

    Je bosse actuellement sur du dessin de graph.
    J'ai donc un algorithme qui modifie la position de chaque sommet d'un graph.
    A chaque passage, il lance une fonction bool arret(graph), sui prend en entrée le graph.

    Cette fonction d'arret doit stocker des informations sur le voisinage de chaque sommet, et les comparer avec les voisinages des itérations précédentes.
    Sachant que je ne connais pas a l'avance la taille des voisinages (ni meme quel partie d'eux je garde), comment je fais pour ne pas perdre d'information d'un appel sur l'autre?
    Parceque si j'ai bien compris, en faisant malloc, lorsque la fonction d'arret arrive a la fin, la mémoire est libérée, or moi j'aimerais qu'elle conserve les informations.

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par cerby Voir le message
    Parceque si j'ai bien compris, en faisant malloc, lorsque la fonction d'arret arrive a la fin, la mémoire est libérée, or moi j'aimerais qu'elle conserve les informations.
    Non de la mémoire allouée par malloc est libérée qu'avec un appel à la fonction free ; tu dois confondre avec les tableaux statiques.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #include <stdio.h>
    #include <stdlib.h>
    int * exemple(int taille)
    {
        int * ret = NULL;
        if(taille > 0) {
            /* allocation dans une fonction */
            ret = malloc(taille * sizeof *ret);
            if(ret != NULL) {
                size_t i;
                for(i = 0; i < taille; ++i) {
                    ret[i] = i*i;
                }
            } else {
                perror("malloc");
            }
        } else {
            fprintf(stderr, "mauvais paramètre\n");
        }
        return ret;
    }
    int main(void)
    {
        int * p = exemple(5)
        if(p != NULL) {
            size_t i;
            for(i = 0; i < 5; ++i) {
                printf("%d: %d\n", i, p[i]);
            }
            /* libération dans le main */
            free(p);
        }
        return EXIT_SUCCESS;
    }

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    ok.
    Et comment garder le pointeur vers ma zone mémoire entre 2 appels? de préférence sans le conserver dans la fonction appelante)

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par cerby Voir le message
    Et comment garder le pointeur vers ma zone mémoire entre 2 appels? de préférence sans le conserver dans la fonction appelante)
    La passer en paramètres ? utiliser une variable statique ? faire de la programmation objet (attention, je n'ai pas dis d'utiliser un autre langage : on peut faire de la prog objet en C, voie les FILE par exemple).

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/11/2014, 16h51
  2. Réponses: 2
    Dernier message: 06/06/2010, 13h50
  3. [Theorie] Passage des informations entre les redolog et les tbs undo
    Par lecharcutierdelinux dans le forum Administration
    Réponses: 10
    Dernier message: 07/06/2007, 10h11
  4. Remplir des listes à partir d'appels de fonction
    Par nickoko dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/07/2006, 11h17
  5. [C#] Transférer des informations entre 2 formulaires
    Par monoeilouais dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/07/2004, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo