【问题标题】:Error while initializing the structure values初始化结构值时出错
【发布时间】:2015-08-30 23:45:59
【问题描述】:

我刚刚开始使用指针。所以如果这看起来很傻,请多多包涵 但我无法找到原因。 我有一个结构

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->value,val);” 你能帮我吗。非常感谢

【问题讨论】:

    标签: c pointers structure


    【解决方案1】:

    您为节点分配了内存,但没有为value 中的字符串分配内存。 strcpy 函数将复制字节但不分配内存。它假设你已经安排好了。在紧要关头,您可以使用strdup 分配和复制字符串:

    newnode->value = strdup(val);
    

    【讨论】:

    • 注意,当你稍后free你的节点时,你需要先free那个value
    猜你喜欢
    • 2015-02-19
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 2015-01-13
    相关资源
    最近更新 更多