Deja, le passage par parametre de ta fonction est fausse. Tu modifie la variable dans ta fonction, donc il faut lui donner l´adresse de cette variable.
Si jamais tu travaillais avec des int simples, tu devrais faire :
fct(int* a)
et ds ton main
fct(&)
ca je suppose que tu sais faire. Ben la c´est pareil, la fct malloc modifie la valeur de ptr...
Donc tu dois passer l´adresse d´un pointeur sur un entier ( int**) a ta fonction.
Ensuite, je comprends pas comment tu peux compiler, car il faut faire un " cast" du malloc :
( int*)malloc(sizeof(int))
donc pour resume change ton code en
allocation(int** ptr)
{
- ptr=(int*)malloc(sizeof(int))
}
et ds ton main
allocation(&)
sinon, plus simplement, ta fonction allocation tu la fais comme ca :
int* allocation()
{
return ( int*)malloc(sizeof(int))
}
Pour finir, avec ton pb de sizeof, si tu fais sizeof(pointeur) tu obtiendras la taille en memoire d´un pointeur, et si tu fais sizeof(*pointeur), la taille d´un element pointe par ce pointeur. En aucun cas tu ne pourras connaitre la taille de la zone memoire allouee, il faudra stocker ca d´une maniere ou d´une autre ( je sais pas si c´etait ton pb avec le sizeof, mais en general ca pose bcp de pb au debut dc j´en ai parle)