分段析构函数中的超出范围故障
Segmentation out-of-range fault in destructor
我的析构函数中有一个分段错误,但我不太确定为什么。该代码用于键/值对的映射,这些键/值对存储在 Node 数组中并链接以避免冲突。
template<class V>
map<string, V>::~map()
{
for(unsigned int i = 0; i < SIZE; i++){
if(hashArray[i] != NULL){
Node* tmpNode = hashArray[i];
Node* currentNode = hashArray[i];
while(currentNode->next != NULL){
currentNode = currentNode->next;
delete tmpNode;
tmpNode = currentNode;
}
delete tmpNode;
}
}
delete [] hashArray;
}
调试器指向这一行,但我相信我不会超出范围。
while(currentNode->next != NULL){
如果需要,可以提供任何其他代码。 提前感谢您的帮助。 :)
我通过删除重复的hashArray[i]
s来清理它。还摆脱了对空的重复检查:
template<class V>
map<string, V>::~map()
{
for(unsigned int i = 0; i < SIZE; i++) {
Node* currentNode = hashArray[i];
while(currentNode) {
Node* next = currentNode->next;
delete currentNode;
currentNode = next;
}
}
delete [] hashArray;
}
相关文章:
- 分段故障(堆芯转储)矢量
- 为什么在全局范围内使用"extern int a"似乎不行?
- C++中的动态铸造故障
- 数组的指针从不分段故障
- 尝试通过多个向量访问变量时,向量下标超出范围
- 错误:未在此范围内声明'reverse'
- 正在将指针转换为范围
- 使用std::transform将一个范围的元素添加到另一个范围中
- vscode g++链路故障:体系结构x86_64的未定义符号
- 在基于范围的for循环中使用结构化绑定声明
- 访问被拒绝后,c++中的故障保护代码
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 如何计算数据类型的范围,例如int
- 由于变量范围导致的段故障
- C 11中的范围(故障)
- Seg故障是由于试图访问超出范围的数组,原因不明
- 当流超出范围时偶尔出现SEG故障
- std::advance - 仅在调试时偏移超出范围的故障
- 分段析构函数中的超出范围故障
- 向量故障中的shared_ptr-迭代和丢失范围-获取损坏的数据