繁体   English   中英

分段错误复制到节点中的字符串数组

[英]Segmentation fault copying to String array in node

尝试以下字符串复制时收到分段错误:

节点定义:

typedef struct node {
    char *args[25];
    struct node *next;
} Node; 

然后从main():

Node *node;
node = malloc(sizeof(Node));
copyArgs(args, node->args);

然后调用的方法:

void copyArgs(char **args, char **nodeArgs) {
    int i;
    for (i = 0; args[i] != NULL; i++) {
        strcpy(nodeArgs[i], args[i]);
    }
}

但是由于某种原因,我收到以下错误:

Segmentation fault (core dumped)

我知道还有其他帖子:使用strcpy时出现段错误,但是我找不到特定于我的问题的帖子。 任何建议将不胜感激。 先感谢您!

解决方案:诚恳地指出,for循环需要这样纠正:

for (i = 0; args[i] != NULL; i++) {
    nodeArgs[i] = malloc(sizeof(char *));
    strcpy(nodeArgs[i], args[i]);
}

谢谢大家的耐心配合。

char *args[MAXLINE/2+1]; 是char指针数组!

每个指针必须分配有一个内存空间,然后才能将内容实际复制到其中。

strcpy(nodeArgs[i], args[i]); 在未分配的空间上盲目复制。

您还必须为每个args以及Node分配内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM