malloc() alloue size octets, et renvoie un pointeur sur la mémoire allouée. Le contenu de la zone de mémoire n’est pas initialisé. Si
size est nulle, malloc renvoie soit NULL ou un unique pointeur qui pourra être passé ultérieurement à free() avec succès.

Jyaif (./1473) :
Folco a lu "seize" à la place de "size" ??
Non non, rassute-toi, et sinon je mets déjà des sizeof quand il en faut, entre autre pour la taille des structures, qui varie certainement en 32 ou 64 bits. Ce que j'ai fait tourne sans bugs sur les deux, c'est bon signe. 
Folco (./1475) :Non. Ne fais pas de suppositions sur la taille des pointeurs. Pareil pour l'endianness.
encore que sur les sizeof(uint*) doivent être constants quelque soient les implémentations justement
Ok, c'était pas clair ^^
GoldenCrystal (./1472) :Mais sizeof(char), ça fait toujours 1
sizeof c'est fait pour les chiens ?
Et bien sûr, l'allocation se fait en nombre de char et non d'octets... Donc pas de problème de débordement 
Jyaif (./1484) :Euuuh... tu déconnes, là ? Énormément de logiciels le font, ne serait-ce que pour les traductions, ou pour utiliser les fonctions Windows qui sont en Unicode par défaut. Sous Linux je sais pas trop, mais j'imagine que ça doit être pareil.
Bon, honnêtement c'est chiant de gérer autre chose que l'ASCII en C/C++, et quasi-personne ne le fait.
Thepro (./1486) :
./1484 1/ C'est faux. Un char fait toujours un char, mais par forcement un octet. sizeof retourne la taille en nombre de char donc renvoie toujours 1 pour sizeof(char).
malloc prend en entrée une taille en nombre de char. La confusion entre les deux, comme dans la plupart des documentations (./1471 par exemple) vient de la mauvaise traduction de byte en octet. Un char correspond à un byte, mais pas forcément à un octet. Un byte et un groupe d'un certain nombre de bits qui peut être différent de 8, sa traduction en octet est souvent une erreur. Le mot octet existe aussi en anglais...

module.h:
struct CUSTOM_DATA;
typedef struct
{
SDL_Surface* background;
SDL_Rect bgPosition;
int numIcons;
ICON* iconList;
struct CUSTOM_DATA* customData;
} MODULE_DATA;careers.h, inclus après module.h:
typedef struct
{
uint16_t numEntries;
ENTRY_CAREER* careersPtr;
} CUSTOM_DATA; uint16_t numberEntries = 0;
MODULE_DATA* data;
data = malloc (sizeof(MODULE_DATA));
[...]
data->customData = malloc (sizeof(uint16_t) + sizeof(ENTRY_CAREER*));
data->customData->numEntries = numberEntries;
Jyaif (./1484) :
Donc te connaissant, maintenant le premier truc sur ta TODO c'est de supporter l'UTF-8 dans ton programme, non?

struct CUSTOM_DATA;
typedef struct
{
SDL_Surface* background;
SDL_Rect bgPosition;
int numIcons;
ICON* iconList;
struct CUSTOM_DATA* customData;
} MODULE_DATA;typedef struct
{
void (*unload)(MODULE_DATA* data);
void (*manage)(MODULE_DATA* data);
MODULE_DATA* data;
} MODULE;#include "module.h" #include "careers.h"
aze (./1493) :
c'est crade et potentiellement un nid à emmerdes. utilises un void* que chaque module va caster différemment


Folco (./1480) :m*rde
Par contre, les pointeurs sur des types m, je connais pas.

Jyaif (./1484) :
Bon, honnêtement c'est chiant de gérer autre chose que l'ASCII en C/C++, et quasi-personne ne le fait.
Du moins si les libs d'affichage qu'on utilise le gèrent d'office.Zerosquare (./1485) :
Euuuh... tu déconnes, là ? Énormément de logiciels le font, ne serait-ce que pour les traductions, ou pour utiliser les fonctions Windows qui sont en Unicode par défaut. Sous Linux je sais pas trop, mais j'imagine que ça doit être pareil.
Cf. aussi ma réponse à Jyaif. Certains frameworks portables comme Qt ou Java ont choisi l'UTF-16 comme leur représentation interne (et du coup là aussi, gérer l'UTF-8 devient presque trivial, il suffit de faire attention aux conversions char * ↔ QString), mais la représentation native de Unicode est l'UTF-8.Folco (./1488) :
Pour changer, j'ai un warning àlakhon, et je ne sais pas ce que GCC veut dire. Ce qui m'emmerde, c'est que je dois faire qqchose de travers... sans m'en rendre compte.
typedef struct
{
uint16_t numEntries;
ENTRY_CAREER* careersPtr;
} CUSTOM_DATA;typedef struct CUSTOM_DATA
{
uint16_t numEntries;
ENTRY_CAREER* careersPtr;
} CUSTOM_DATA;