簡體   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