动态分配Array时出现奇怪的分段故障
Weird Segmentation Fault When dynamically allocating Array
我正在为我的一个编程类创建一个shell。我有一个命令行类,用于解析输入到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 == ' ')
{
if (cmdLength != 0)
argCount++;
cmdLength = 0;
if (*pointer == ' ')
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]
所指向的块大小
相关文章:
- 分段故障(堆芯转储)矢量
- 数组的指针从不分段故障
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 分段故障 运行C++代码时出现 SIGSEGV
- 分段故障背包问题
- 分段故障 11,从类函数显示动态 C 字符串
- 面临分段故障 使用 ffmpeg 读取视频时,因为"pFormatCtx-> streams [i]-> codecpar"的地址0x00
- 在C++中,当指向删除和指向不同对象时,分段故障指针
- 分段故障说明
- 分段故障(核心转储)-不知道为什么
- 分段故障线程
- hiredis SET遇到分段故障
- 分段故障,合并排序算法
- 多线程程序中的分段故障和gdb回溯上的不完整信息
- 到达主C++之前分段故障
- 分段故障核心使用 IF流转储
- 使用向量的移动键盘排列(分段故障)
- 在二进制树插入和遍历期间,我得到了分段故障
- 分段故障在类之间返回整数
- C++分段故障BST