Salut salut,
Voilà, gros débutant en C, j'ai un soucis avec l'utilisation de malloc: j'avais lu qu'il renvoyait un void* soit "un pointeur sur n'importe quel type".
Et le tutoriel où j'avais lu ces lignes (et où j'ai à peu près tout appris en matière de C soit dit en passant) présentait l'exemple suivant:
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 long* memoireAllouee = NULL; memoireAllouee = malloc(sizeof(long));
Jusque là tout va bien, il me semblait donc qu'il suffisait de définir précédemment le type du pointeur pour y récupérer automatiquement un pointeur correspondant avec malloc.
OR, lors de ma mise en pratique, ce type d'instruction me renvoie l'erreur de compilation invalid conversion from 'void*' to 'long int*'.
J'ai contourné le problème en réécrivant le code de la façon suivante (d'après un exemple trouvé sur cette bonne vieille Toile):
ce qui ne renvoie en tout cas plus d'erreur (en fait je fait un "cast" si j'ai bien compris, convertissant un type en un autre, ici le void* de sortie dans le type long* demandé).
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 long* memoireAllouee = NULL; memoireAllouee = (long*) malloc(sizeof(long));
Le code proposé dans le tutoriel est-il donc faux ou bien (chose la plus probable) qqchose m'échappe encore?
Partager