这是我刚才写的一个函数的简化版本:
int foobar(char * foo) {
puts(type);
struct node * ptr = (struct node *) malloc (sizeof(struct node));
puts(type);
memset(ptr, 0, sizeof(ptr));
ptr=head;
return head->id;
}
这里node
只是在链接列表中声明为一个节点的结构,它包含一个char *
和一个指向下一个节点的指针。但是,我意识到malloc()
这里正在破坏我的输入char * foo
。
为什么会malloc()
损坏我的输入字符指针?另外,我该如何解决这里的问题?现在我只是将该指针的内容复制到本地数组,但这太老套了,即使我的口味(这不是最好的)。
感谢您的任何投入!
编辑:好吧,这里有更真实的代码:
void foobar(char * type) {
puts(type); <-- here it's a long string about 30 char
struct node * ptr = (struct node *) malloc (sizeof(struct node));
puts(type); <- chopped of, 10 left with some random thing at the end
}
希望问题现在很清楚!谢谢!
编辑:
以下是type
初始化的方式:
type = strdup("Some ");
tempType = strdup("things");
sprintf(type + strlen(type), "%s", tempType);
谢谢!