Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/08/2015, à 12:22

MasterYo

[Résolu] Segmentation fault (core dumped) en c, (allocation dynamique)

Bonjour, je suis assez novice en programmation et j'ai l'erreur "Segmentation fault (core dumped)" avec ce code en c, compilé avec GCC.

#include <stdio.h>
#include <stdlib.h>

int i = 0;
char initialiser(int taille);
void afficherTableau(char *ptr, int taille);

int main()
{
    char *tableau = initialiser(5); //Initialise tableau.
    afficherTableau(tableau, 5);    //Affiche tableau.

    printf("\n");
    return 0;
}

char initialiser(int taille)
{
    char *ptr = malloc(taille * sizeof(ptr));   //Alloue la mémoire a l'addresse de ptr.
    for (i = 0; i < taille; i++)
    {
        ptr[i] = '*';       //Définit les cases de ptr comme '*'.
    }
    return ptr;     //Retourne l'adresse de ptr.
}

void afficherTableau(char *ptr, int taille)
{
    for (i = 0; i < taille; i++)
    {
        printf("%c", ptr[i]); //Affiche chaque case de ptr. L'ERREUR SE PASSE A CETTE LIGNE (plus de problème si commentée).
    }
}

Code::Blocks affiche ceci en boucle dans la section "debugger" à la ligne du "malloc" : "Cannot open file: malloc.c".
L'erreur dans le debugger dans "watches" à la ligne du printf : "0x10 <error: Cannot access memory at adress 0x10>".

Je ne comprends pas pourquoi je n'ai pas le droit d'accéder a ce pointeur alors que j'ai pu le créer et l'allouer.

Merci d'avance pour vos réponses wink

Dernière modification par MasterYo (Le 11/08/2015, à 16:27)

Hors ligne

#2 Le 10/08/2015, à 12:35

pingouinux

Re : [Résolu] Segmentation fault (core dumped) en c, (allocation dynamique)

Bonjour,
Il fat déclarer la fonction ainsi :

char *initialiser(int taille);

Hors ligne

#3 Le 10/08/2015, à 12:40

MasterYo

Re : [Résolu] Segmentation fault (core dumped) en c, (allocation dynamique)

pingouinux a écrit :

Bonjour,
Il fat déclarer la fonction ainsi :

char *initialiser(int taille);

MERCI!!!!! Je me suis tellement cassé la tête a chercher partout sur internet... Je penserais direct au forum les prochaines fois wink

Merci beaucoup.

Hors ligne

#4 Le 10/08/2015, à 13:38

grigouille

Re : [Résolu] Segmentation fault (core dumped) en c, (allocation dynamique)

Il y a une fuite mémoire roll.


Debian (xfce) 12
HP LaserJet M1132 MFP

Hors ligne

#5 Le 11/08/2015, à 13:36

MasterYo

Re : [Résolu] Segmentation fault (core dumped) en c, (allocation dynamique)

grigouille a écrit :

Il y a une fuite mémoire roll.

Oui roll j'ai réglé le problème wink

Dernière modification par MasterYo (Le 11/08/2015, à 13:37)

Hors ligne

#6 Le 11/08/2015, à 14:01

grigouille

Re : [Résolu] Segmentation fault (core dumped) en c, (allocation dynamique)

Bonne nouvelle. Maintenant, il me semble qu'il y a un problème ici :

char *ptr = malloc(taille * sizeof(ptr));   //Alloue la mémoire a l'addresse de ptr.

Debian (xfce) 12
HP LaserJet M1132 MFP

Hors ligne