我正在使用 uthash (http://uthash.sourceforge.net/userguide.html) 在我的 C 程序中使用哈希表实现。
我试图在添加之前和之后打印添加到哈希表中的数据,并且在 malloc 之后打印它时得到垃圾值。请看下面的代码。
void add_user(int user_id, char *name)
{
printf("User ID : %d Name : %s, user_id,name); // Prints fine !!
struct my_struct *s;
s = malloc(sizeof(struct my_struct));
s->id = user_id;
strcpy(s->name, name);
printf("User ID : %d Name : %s, s->user_id,s->name); // Prints User ID fine, but for Name, only half of it is printed right, rest is Garbage !!
HASH_ADD_INT( users, id, s );
}
如果我执行以下操作:
void add_user(int user_id, char *name)
{
printf("User ID : %d Name : %s, user_id,name); // Prints fine !!
struct my_struct *s;
s = malloc(sizeof(struct my_struct));
printf("User ID : %d Name : %s, user_id,name); // Printing same as previous printf then I get Garbage values printed for Name
}
但是,如果我也注释掉 malloc,那么两个 printf 语句都会正确打印。
帮助 !!!