簡體   English   中英

動態分配數組時出現奇怪的分段錯誤

[英]Weird Segmentation Fault When dynamically allocating Array

我正在為我的一個編程類創建一個shell。 我有一個commandLine類,用於解析鍵入到shell中的命令,並根據命令的數量動態分配argv並設置argc。 在我的一生中,我無法弄清楚為什么在為argv動態分配指向數組的指針后出現分段錯誤。

這是該類的構造函數。 如果有人知道為什么我會遇到這個錯誤,我將不勝感激。 謝謝

CommandLine::CommandLine(istream& in){
    char * userInput = new char[256];
    char * pointer = &userInput[0];

    char cmdStorage[128][32];
    int cmdLength = 0;
    int argCount = 0;
    in.getline(userInput,256);

    while(1)
    {
        if (*pointer == ' ' || *pointer == '\0')
        {
            if (cmdLength != 0)
                argCount++;

            cmdLength = 0;
            if (*pointer == '\0')
                break;
        }
        else
        {
            cmdStorage[argCount][cmdLength] = *pointer;
            cmdLength++;
        }

        pointer++;
    }

    *argv = (char *) calloc(argCount,sizeof(char*));


    for (int i = 0; i < argCount; i++)
    {
        argv[i] = (char *) calloc(33,sizeof(char));
        memcpy(argv[i],cmdStorage[i],sizeof(cmdStorage[i]));
    }
    argc = argCount;
}

錯誤在這里:

memcpy(argv[i],cmdStorage[i],sizeof(cmdStorage[i]));

sizeof(cmdStorage[i]) > argv[i]指向的塊的大小。

暫無
暫無

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

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