#1 Le 10/08/2015, à 11: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
Dernière modification par MasterYo (Le 11/08/2015, à 15:27)
Hors ligne
#2 Le 10/08/2015, à 11: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, à 11:40
- MasterYo
Re : [Résolu] Segmentation fault (core dumped) en c, (allocation dynamique)
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
Merci beaucoup.
Hors ligne
#4 Le 10/08/2015, à 12:38
- grigouille
Re : [Résolu] Segmentation fault (core dumped) en c, (allocation dynamique)
Il y a une fuite mémoire .
Debian (xfce) 12
HP LaserJet M1132 MFP
Hors ligne
#5 Le 11/08/2015, à 12:36
- MasterYo
Re : [Résolu] Segmentation fault (core dumped) en c, (allocation dynamique)
Il y a une fuite mémoire .
Oui j'ai réglé le problème
Dernière modification par MasterYo (Le 11/08/2015, à 12:37)
Hors ligne
#6 Le 11/08/2015, à 13: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