gcc (GCC) 4.6.3
c89
apache runtime portable libraries
你好,
只是一个简单的问题,我想我正在尝试创建一个 uuid 值。
我希望我创建它的函数是独立的(黑匣子),所以我可以只传递一个缓冲区,然后该函数将完成其余的工作。
这意味着我必须在该函数的堆上声明内存,因为调用函数并不知道要声明多少。我知道这是个坏主意,因为 callie 必须在完成后释放内存。
有什么办法可以做得更好吗?
当我运行它时,函数返回后,branch_id_buf 始终为空。但是,我已将它传递给函数,因此当函数返回时不应为空,因为它应该指向一些分配的内存。
非常感谢您的任何建议,
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);
}