簡體   English   中英

將字符串復制到內存分配的數組時出現分段錯誤

[英]Segmentation fault while copying a string to the memory allocated array

以下是我正在練習的程序;

int main() {
    int i = 0;
    char **grid = (char **) malloc(5*sizeof(int));
        for (i = 0 ; i < 5 ; i++)
            grid[i] = (char *) malloc(6);
            strcpy(grid[0], "eabcd");
            strcpy(grid[1], "fghij");
            strcpy(grid[2], "olkmn");
            strcpy(grid[3], "trpqs");
            strcpy(grid[4], "xywuv"); /*Segmentation Fault at this line*/
        return 0;
}

我在strcpy(grid[4], "xywuv");行遇到分段錯誤strcpy(grid[4], "xywuv"); . 可能是什么原因? 我已將數組分配為 5 個字符串(行),每個字符串(行)6 個字符(列)。

您在第 3 行分配了錯誤的類型

char **grid = (char **) malloc(5*sizeof(int));

應該是char **grid = (char **) malloc(5*sizeof(char*));

這是因為您正在聲明字符串數組。 因此,malloc 應該是char* (string / character pointer)

如果您嘗試聲明二維整數數組,也一樣。 這將是

int **grid = (int **) malloc(5*sizeof(int*));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM