C++ 由于while循环中的条件而导致分段错误

C++ 由于while循环中的条件而导致分段错误,c++,C++,我正在用一个字符串数组制作一个哈希表,在我的insert中,我有一个while语句来处理冲突和换行。我已经试过了,似乎只有在使用条件语句时才会出现分段错误11。这是我的while循环: while (numElm != length) { numProbes = 0; int index = hash( newGuest ); //handles collision and wraparound while (hashArray[index] != " " &am

我正在用一个字符串数组制作一个哈希表,在我的insert中,我有一个while语句来处理冲突和换行。我已经试过了,似乎只有在使用条件语句时才会出现分段错误11。这是我的while循环:

while (numElm != length)
{
    numProbes = 0;
    int index = hash( newGuest );
    //handles collision and wraparound
    while (hashArray[index] != " " && hashArray[index] != "-1")
    {
        ++index;
        index %= length;
        numProbes = numProbes + 1;
    }

    //sets the array at the index eqaul to data
    hashArray[index] = newGuest;
    cout << newGuest << " has been inserted at index: " << index << " using " << numProbes << " probes";
    break;

}
while(numElm!=长度)
{
numProbes=0;
int index=hash(newGuest);
//处理碰撞和环绕
while(hashArray[index]!=”&&hashArray[index]!=“-1”)
{
++指数;
指数%=长度;
numProbes=numProbes+1;
}
//将索引eqaul处的数组设置为data
hashArray[index]=newGuest;
cout您不初始化成员变量
hashArray
,只初始化构造函数中的局部变量
hashArray
。类中的
hashArray
保持未初始化状态,并在使用时导致崩溃。若要修复,请替换

string *hashArray = new string[tableLength];

这就解决了问题。除此之外,代码还有许多风格和代码方面的问题,但我希望您能够继续学习自己解决这些问题。祝您好运!

您没有初始化成员变量
hashArray
,而只是构造函数中的局部变量
hashArray
。c中的
hashArray
lass未初始化,使用时会导致崩溃。若要修复,请替换

string *hashArray = new string[tableLength];


这就解决了问题。除此之外,代码还有很多风格和代码方面的问题,但我希望您能继续学习自己解决这些问题。祝您好运!

hashArray的声明是什么?事实上。请给出完整的说明。您的
索引显然超出了
hashArray
。尝试过调试吗?是的吗您确定
hash(newGuest)
总是返回一个不在数组边界之外的有效索引吗?供将来参考:解决此类问题的正确工具是调试器。在询问堆栈溢出问题之前,您应该逐行检查代码。有关更多帮助,请阅读。至少,您应该[编辑]您的问题需要包含一个重现您的问题的示例,以及您在调试器中所做的观察。
hashArray
的声明是什么?事实上。请给出完整的说明。您的
索引显然超出了
hashArray
。尝试过调试吗?您确定
hash(newGuest)
始终返回不在数组边界之外的有效索引?供将来参考:解决此类问题的正确工具是调试器。在询问堆栈溢出问题之前,应逐行检查代码。有关更多帮助,请阅读。至少应[编辑]您的问题将包括一个重现您的问题的示例,以及您在调试器中所做的观察。谢谢!简直不敢相信它这么简单!尝试打开警告。我知道MSVC(您可能正在使用)对此问题有警告。谢谢!简直不敢相信它这么简单!尝试打开警告。我知道MSVC(您可能正在使用)具有针对此确切问题的警告。
hashArray = new string[tableLength];