gpt4 book ai didi

c++ - 动态分配数组时出现奇怪的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 04:44:21 27 4
gpt4 key购买 nike

我正在为我的一个编程类(class)创建一个 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])> block argv[i] 指向的大小。

关于c++ - 动态分配数组时出现奇怪的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22700489/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com