我刚刚开始使用指针。如果这看起来很傻,请跟我说 但我无法找到原因。 我有一个结构
typedef struct Intermediatenode
{
int key;
char *value;
int height;
struct node *next[SKIPLIST_MAX_HEIGHT];
} node;
我想用下面的函数
创建一个新节点 node *create_node(int key, char * val, int h)
{
node *newnode;
newnode=malloc(sizeof(node));
newnode->height=h;
newnode->key=key;
printf("till here %s \n",val);
printf("till here %d \n",newnode->height);
printf("till here %d \n",newnode->key);
strcpy(newnode->value,val);
printf("till here %s \n",newnode->value);
return newnode;
}
但是我在此处遇到了分段错误 "的strcpy(newnode->值,val)的;" 能帮帮我吧。谢谢你们。
答案 0 :(得分:4)
您为节点分配了内存,但没有为value
中的字符串分配内存。 strcpy
函数将复制字节但不分配内存。它假定你已经安排了那个。在紧要关头,您可以使用strdup
分配和复制字符串:
newnode->value = strdup(val);