ce qui devrait m'allouer un pointeur car c'est ce qu'est Case, et pourtant ça m'alloue une structure
malloc() en à rien à faire de ce que tu alloue, la seule chose qui l'intéresse, c'est sa taille. Si il se trouve que la taille de ta structure est inférieure à la taille de ton pointeur (t'est en 64bits ? les pointeurs sont gros en 64bits ;), tu n'aura aucun problème. Si ce n'est pas le cas, mais que tu n'utilise que les membres qui se trouvent être parmi les premiers sizeof(Case) octets1 de ta structure, ton code va tourner parfaitement quand même. Et même si tu dépasse, ce n'est pas garanti que ton programme plante (mais ne compte pas la dessus, ça peut planter bizarrement ailleurs, voire pire, fonctionner parfaitement mais avec une faille de sécurité), par contre, c'est presque garanti que valgrind va gueuler.
De manière générale, ce n'est pas parce qu'un code marche chez toi qu'il est correct, portable et qu'il va marcher chez tout le monde.
1 oui je sais c'est pas des octets mais des "tailles de char", tapez pas.
# Meh.
Posté par Batchyx . En réponse au message Malloc et pointeur sur structure anonyme. Évalué à 10.
malloc() en à rien à faire de ce que tu alloue, la seule chose qui l'intéresse, c'est sa taille. Si il se trouve que la taille de ta structure est inférieure à la taille de ton pointeur (t'est en 64bits ? les pointeurs sont gros en 64bits ;), tu n'aura aucun problème. Si ce n'est pas le cas, mais que tu n'utilise que les membres qui se trouvent être parmi les premiers sizeof(Case) octets1 de ta structure, ton code va tourner parfaitement quand même. Et même si tu dépasse, ce n'est pas garanti que ton programme plante (mais ne compte pas la dessus, ça peut planter bizarrement ailleurs, voire pire, fonctionner parfaitement mais avec une faille de sécurité), par contre, c'est presque garanti que valgrind va gueuler.
De manière générale, ce n'est pas parce qu'un code marche chez toi qu'il est correct, portable et qu'il va marcher chez tout le monde.
1 oui je sais c'est pas des octets mais des "tailles de char", tapez pas.