Re-Bonjour,
Mon code comporte plusieurs allocations dynamiques que l'on me conseille de supprimer (ce sont tous des allocations sur des pointeurs de structures). mais je ne vois pas comment les supprimer, je suis pourtant bien obligé d'allouer les memoires d'un pointeur de structure pour pouvoir ecrire dans sa memoire par la suite !
Je vous donne ici quelques exemples de fonctions ou il faudrais que je supprime mes allocations dynamiques :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 struct sql_result * sql_make_empty_sql_result() { struct sql_result * result = (struct sql_result *) malloc(sizeof(struct sql_result)); if (check_not(result == NULL, "Can't alloc result")) { return NULL; } result->nrows = 0; result->ncolumns = 0; result->row_array_size = 0; result->binary = 0; result->att_desc = NULL; result->rows = NULL; return result; }il y a d'autres fonctions mais je ne les mes pas toutes car elles sont trop longues. Si quelqu'un pouvais me dire si il y avais une autre facon de faire pour optimiser mon code de cette facon ca serais cool !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 struct sql_notify * sql_notify_read ( struct sql_connection * sql_conn, const char * msg ) { struct sql_notify * notify; char name[256]; int sread = 0; uint32_t id = sql_get_int(sizeof(uint32_t), msg); sread += sizeof(uint32_t); strcpy(name, msg + sread); /* The last character is not include in the name, it's an extra empty string because not inplementd yet in the protocol */ name[strlen(name)-1] = '\0'; sread += strlen(name); notify = (struct sql_notify *) malloc(sizeof(struct sql_notify) + sread); if (check_not(notify == NULL, "Can't alloc sql_notify")) { return notify; } notify->id = id; notify->name = (char *) notify + sizeof(struct sql_notify); strcpy(notify->name, name); return notify; }
Merci d'avance.
Partager