我正在使用uthash(http://uthash.sourceforge.net/userguide.html)在我的C程序中使用哈希表實現。uthash add malloc strcpy printf打印垃圾值
我想printf在添加之前和之後被添加到哈希表中的數據,並且當我在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語句正確打印。
幫助!!!
很難猜測,看不到你的'my_struct'看起來像什麼。也許你正在使用一個指針將'name'存儲在你的struct中?在這種情況下,在嘗試將字符串複製到它之前,您確實需要爲它分配(單獨!)空間。否則,你正在污染你的記憶。 – YePhIcK 2012-07-15 07:18:34