Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么这个函数会出现故障?_C++_Pointers_Segmentation Fault_Dynamic Memory Allocation - Fatal编程技术网

C++ 为什么这个函数会出现故障?

C++ 为什么这个函数会出现故障?,c++,pointers,segmentation-fault,dynamic-memory-allocation,C++,Pointers,Segmentation Fault,Dynamic Memory Allocation,其功能是: Set::Set(Multinumber* tempArray[], int tempSize) { numElements = tempSize; capacity = tempSize*2; setArray = new Multinumber*[capacity]; for (int i=0; i<numElements; i++) { addElement(tempArray[i]); } } c4和c5已经声明为指向适当类型对象的指针 任何帮助都将不

其功能是:

Set::Set(Multinumber* tempArray[], int tempSize)
{
 numElements = tempSize;
 capacity = tempSize*2;
 setArray = new Multinumber*[capacity];
 for (int i=0; i<numElements; i++)
 {
  addElement(tempArray[i]);
 }
}
c4和c5已经声明为指向适当类型对象的指针

任何帮助都将不胜感激

编辑:下面的代码是addElement函数(对缩进表示歉意)

编辑:更改了数组索引,但仍然存在错误

carr[1]=c4;
carr[2]=c5;
难道不是吗

carr[0]=c4;
carr[1]=c5;
?

一条建议:如果你在一个调试器中加载它,比如gdb,它会识别出错误行,你会很快看到你的错误

难道不是吗

carr[0]=c4;
carr[1]=c5;
?


一条建议:如果你在一个调试器(比如gdb)中加载它,它会识别出错误行,你会很快看到错误。

数组使用零基索引,因此将
carr[2]
设置为两个长度数组中的任何内容都是未定义的行为。你应该庆幸这是一个错误。:-)

尝试:


这应该考虑segfault。

数组使用基于零的索引,因此将
carr[2]
设置为两个长度数组中的任何内容都是未定义的行为。你应该庆幸这是一个错误。:-)

尝试:


这应该可以解决segfault。

实际上,还是segfaultunfortunately@Ross你能在gdb或其他调试器中启动代码,看看它告诉你什么吗?另外,addElement()的代码可能会有所帮助-我看不出还有其他错误。添加了addElement函数。不幸的是,我现在没有调试器,也没有在这台计算机上安装调试器的权限。我很确定addelement确实可以工作,因为我在程序中的另一个地方使用过它,但它没有segfault。实际上,添加cout语句似乎表示它在addelement(params)上确实存在segfault,添加了另一个代码示例。库茨说,不可能在其他任何地方出现断层。实际上,还是断层unfortunately@Ross你能在gdb或其他调试器中启动代码,看看它告诉你什么吗?另外,addElement()的代码可能会有所帮助-我看不出还有其他错误。添加了addElement函数。不幸的是,我现在没有调试器,也没有在这台计算机上安装调试器的权限。我很确定addelement确实可以工作,因为我在程序中的另一个地方使用过它,但它没有segfault。实际上,添加cout语句似乎表示它在addelement(params)上确实存在segfault,添加了另一个代码示例。couts说,segfault不可能出现在其他任何地方。需要更多的上下文。一个完整的、可编译的示例将是极好的。您仍然没有提供addElement的代码。可能出现错误的地方还有默认构造函数、复制构造函数和类集合的析构函数,所以最好也发布这些代码。需要更多的上下文。一个完整的、可编译的示例将是极好的。您仍然没有提供addElement的代码。可能出现错误的地方还有类集合的默认构造函数、复制构造函数和析构函数,所以最好也发布这些代码。然后需要更多的上下文。请提供相关类的定义…然后需要更多上下文。请提供有关类的定义。。。
carr[1]=c4;
carr[2]=c5;
carr[0]=c4;
carr[1]=c5;
Multinumber* carr[2];
carr[0]=c4;
carr[1]=c5;
Set setb(carr,2);