gcc (GCC) 4.6.3
c89
apache runtime portable libraries
Bonjour,déclarant la mémoire en utilisant malloc
Juste une question simple, je suppose que je suis en train de créer une valeur UUID.
Je veux une fonction qui le crée pour être autonome (boîte noire) donc je peux juste passer un tampon et la fonction fera le reste.
Ce qui signifie que je dois déclarer la mémoire sur le tas dans cette fonction, car la fonction appelante ne sait pas grand-chose à déclarer. Je sais que c'est une mauvaise idée, car le callie devra libérer la mémoire une fois qu'il a fini avec elle.
Y at-il un moyen de faire mieux?
Lorsque je lance ceci, le branch_id_buf est toujours nul après le retour de la fonction. Cependant, je l'ai passé à la fonction ne devrait donc pas être nul lorsque la fonction retourne car il devrait pointer vers une mémoire allouée.
Un grand merci pour tous les conseils,
static void g_get_branch_id(char *branch_id_buf);
int main(void)
{
char *branch_id_buf = NULL;
g_get_branch_id(branch_id_buf);
printf("branch id [ %s ]\n", branch_id_buf);
free(branch_id_buf);
return 0;
}
static void g_get_branch_id(char *branch_id_buf)
{
apr_uuid_t uuid;
#define MAGIC_COOKIE_LENGTH 9
const char *MAGIC_COOKIE = "z9hG4bk-";
const int BRANCH_ID_LENGTH = APR_UUID_FORMATTED_LENGTH + MAGIC_COOKIE_LENGTH;
branch_id_buf = malloc(BRANCH_ID_LENGTH);
if(branch_id_buf == NULL) {
return;
}
strncpy(branch_id_buf, MAGIC_COOKIE, BRANCH_ID_LENGTH);
printf("branch id [ %s ]\n", branch_id_buf);
apr_uuid_get(&uuid);
#define PREFIX_BRANCH_LENGTH 8
apr_uuid_format(branch_id_buf + PREFIX_BRANCH_LENGTH, &uuid);
printf("branch id [ %s ]\n", branch_id_buf);
}
Êtes-vous sûr de ne pas manquer de ressources lors de l'exécution de ce programme? – fduff
que se passe-t-il si vous faites un seul pas dans g_get_branch_id()? – fduff