- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我运行我的项目时,我一遍又一遍地遇到这个错误。不知道哪里出了问题。我知道这是关于我再次使用的一些空闲内存,或者空指针或对不存在内存的访问,但实际上我检查了所有指针,它们被声明为它们应该是的。
代码如下:
#include <iostream>
using namespace std ;
typedef struct ND {
int ID;
char* Name;
char* Address;
int Age;
double GPA;
ND * next;
} NODE;
class HF {
private :
int count;
int size ;
int prime;
int a ,b;
NODE ** HT;
public:
HF ();
HF ( int n , int p , int a, int b);
~ HF ();
int findindex(int key);
bool insert (int ID,char* Name,char* Address,int Age,double GPA);
bool retrieve (int & ID,char* & Name,char* & Address,int & Age,double & GPA);
bool remove(int key);
double GetLoadFactor ();
};
HF :: HF ()
{
size = 100;
prime = 997;
a = 23 ;
b = 88;
count =0;
HT = new NODE* [size];
for (int i=0; i< size ; i++)
HT[i] = NULL;
}
HF :: HF ( int n , int p , int a, int b)
{
size = n;
prime = p;
a = a;
b = b;
count = 0;
HT = new NODE* [size];
for (int i=0; i< size ; i++)
HT[i] = NULL;
}
HF :: ~ HF ()
{
NODE *p;
for (int i=0 ; i<size ; i++)
{
while (HT[i] != NULL)
{
p = HT[i];
HT[i] = HT[i] -> next ;
delete p;
}
}
delete [] HT ;
}
int HF :: findindex(int key)
{
int index ;
index = (((a*(key)+b) % prime) % size) ;
index = index % size ;
return index;
}
bool HF :: insert (int ID,char* Name,char* Address,int Age,double GPA)
{
int i ;
NODE * n;
n = new NODE;
n -> ID = ID;
n -> Address = Address;
n -> Name = Name;
n -> Age = Age;
n -> GPA = GPA;
n -> next = NULL;
i = findindex(ID);
if ( HT[i] == NULL)
{
HT[i] = n;
}
else
{
n -> next = HT[i];
HT[i] = n;
}
count ++ ;
return true;
}
bool HF ::retrieve (int & key,char* & Name,char * &Address,int & Age,double & GPA)
{
int i ;
NODE *p;
i = findindex(key);
if ( HT[i] == NULL)
{
return false;
}
else
{
p = HT[i];
if ( HT[i] -> ID == key)// here is the break point
{
key = p-> ID ;
Name = p-> Name ;
Address = p-> Address ;
Age = p-> Age;
GPA = p-> GPA ;
return true ;
}
while ( p != NULL)
{
if ( p-> ID == key)
{
key = p-> ID ;
Name = p-> Name ;
Address = p-> Address ;
Age = p-> Age;
GPA = p-> GPA ;
return true ;
}
else
p = p-> next ;
}
}
return false;
}
bool HF :: remove (int key)
{
int i ;
NODE *p1 , *p2;
i = findindex(key);
if ( HT[i] == NULL)
{
return false;
}
else
{
p1 =p2 = HT[i];
if(HT[i] -> ID == key)
{
HT[i] = HT[i] -> next;
delete p2;
return true;
}
while ( p2 != NULL)
{
if ( p2 -> ID == key)
{
p1 -> next = p2 -> next ;
delete p2;
count --;
return true;
}
else
{
p1 =p2;
p2 = p2 -> next;
}
}
}
return false;
}
double HF :: GetLoadFactor()
{
double L;
L = (double) count/size ;
return L;
}
int main ()
{
double L;
int x,age;
char * name , *address;
double GPA;
HF UHashFunc1;
HF UHashFunc2( 11 , 7 , 3 , 0);
UHashFunc1.insert( 6 , "Ahmed" , "Jenin" , 20 , 3.5);
UHashFunc1.insert( 1 , "Sarah" , "Jenin" , 18 , 3.2);
UHashFunc1.insert(40 , "Mohammad" , "Tolkrem", 19 , 3.0);
UHashFunc1.insert(2 , "Ala'a" , "Jerusalem", 19 , 2.6);
UHashFunc1.insert(41 , "Raghad" , "Tolkrem", 19 , 1.6);
UHashFunc1.insert(80 , "Mohammad" , "Jenin", 22 , 2.7);
UHashFunc1.insert(83 , "Murad" , "Nablus", 18 , 3.7);
UHashFunc1.insert(44 , "Reem" , "Hebron", 19 , 2.9);
UHashFunc1.insert(50 , "Wajde" , "Qalqelya", 20, 1.7);
UHashFunc1.insert(42 , "Belal" , "Hebron", 20 , 3.4);
UHashFunc1.insert(3 , "Ahmed" , "Nablus", 21 , 1.9);
UHashFunc1.insert(84 , "Haitham" , "Nablus", 21 , 3.1);
cout <<"enter the ID you want to retrieve"<<endl;
cin>>x;
if(UHashFunc1.retrieve(x,name,address,age,GPA))
{
cout << "ID:"<<x<<endl;
cout << "Name:"<<name<<endl;
cout << "Address:"<<address<<endl;
cout << "Age:"<<age<<endl;
cout << "GPA:"<<GPA<<endl;
}
else
cout<<"NOT FOUND"<<endl;
cout <<"enter the ID you want to retrieve"<<endl;
cin>>x;
if(UHashFunc1.retrieve(x,name,address,age,GPA))
{
cout << "ID:"<<x<<endl;
cout << "Name:"<<name<<endl;
cout << "Address:"<<address<<endl;
cout << "Age:"<<age<<endl;
cout << "GPA:"<<GPA<<endl;
}
else
cout<<"NOT FOUND"<<endl;
L=UHashFunc1.GetLoadFactor();
cout << "The current load factor is : " << L <<endl;
UHashFunc1.remove(42);
L=UHashFunc1.GetLoadFactor();
cout << "The current load factor is : " << L <<endl;
x=84;
UHashFunc1.retrieve(x,name,address,age,GPA);
cout << "ID:"<<x<<endl;
cout << "Name:"<<name<<endl;
cout << "Address:"<<address<<endl;
cout << "Age:"<<age<<endl;
cout << "GPA:"<<GPA<<endl;
x=1;
UHashFunc1.retrieve(x,name,address,age,GPA);
cout << "ID:"<<x<<endl;
cout << "Name:"<<name<<endl;
cout << "Address:"<<address<<endl;
cout << "Age:"<<age<<endl;
cout << "GPA:"<<GPA<<endl;
x=50;
UHashFunc1.retrieve(x,name,address,age,GPA);
cout << "ID:"<<x<<endl;
cout << "Name:"<<name<<endl;
cout << "Address:"<<address<<endl;
cout << "Age:"<<age<<endl;
cout << "GPA:"<<GPA<<endl;
cout << "Enter The ID you want to remove"<<endl;
cin>>x;
if(UHashFunc1.remove(x))
{
L=UHashFunc1.GetLoadFactor();
cout << "The current load factor after removing a record is : " << L <<endl;
}
else
{ cout << "NOT Exist"<<endl;}
if(UHashFunc1.remove(2))
{
L=UHashFunc1.GetLoadFactor();
cout << "The current load factor after removing a record is : " << L <<endl;
}
else
{ cout << "NOT Exist"<<endl;}
UHashFunc1.insert( 45 , "Amjad" , "Nablus" , 19 , 2.0);
L=UHashFunc1.GetLoadFactor();
cout << "The current load factor after adding a record is : " << L <<endl;
if(UHashFunc1.remove(80))
{
L=UHashFunc1.GetLoadFactor();
cout << "The current load factor after removing the record is : " << L <<endl;
}
else
{ cout << "NOT Exist"<<endl;}
if(UHashFunc1.remove(50))
{
L=UHashFunc1.GetLoadFactor();
cout << "The current load factor after removing the record is : " << L <<endl;
}
else
{ cout << "NOT Exist"<<endl;}
UHashFunc2.insert( 5 , "Ahmed" , "Jenin" , 20 , 3.5);
UHashFunc2.insert( 1 , "Sarah" , "Jenin" , 18 , 3.2);
UHashFunc2.insert(9 , "Mohammad" , "Tolkrem", 19 , 3.0);
UHashFunc2.insert(2 , "Ala'a" , "Jerusalem", 19 , 2.6);
UHashFunc2.insert(8 , "Raghad" , "Tolkrem", 19 , 1.6);
UHashFunc2.insert(100 , "Mohammad" , "Jenin", 22 , 2.7);
UHashFunc2.insert(50 , "Murad" , "Nablus", 18 , 3.7);
UHashFunc2.insert(23 , "Reem" , "Hebron", 19 , 2.9);
UHashFunc2.insert(40 , "Wajde" , "Qalqelya", 20, 1.7);
UHashFunc2.insert(17 , "Belal" , "Hebron", 20 , 3.4);
UHashFunc2.insert(3 , "Ahmed" , "Nablus", 21 , 1.9);
UHashFunc2.insert(7 , "Haitham" , "Nablus", 21 , 3.1);
cout <<"enter the ID you want to retrieve from the 2nd Func"<<endl;
cin>>x;
if(UHashFunc2.retrieve(x,name,address,age,GPA))
{
cout << "ID:"<<x<<endl;
cout << "Name:"<<name<<endl;
cout << "Address:"<<address<<endl;
cout << "Age:"<<age<<endl;
cout << "GPA:"<<GPA<<endl;
}
else
cout<<"NOT FOUND"<<endl;
cout <<"enter the ID you want to retrieve from the 2nd Func"<<endl;
cin>>x;
if(UHashFunc2.retrieve(x,name,address,age,GPA))
{
cout << "ID:"<<x<<endl;
cout << "Name:"<<name<<endl;
cout << "Address:"<<address<<endl;
cout << "Age:"<<age<<endl;
cout << "GPA:"<<GPA<<endl;
}
else
cout<<"NOT FOUND"<<endl;
L=UHashFunc2.GetLoadFactor();
cout << "The current load factor is : " << L <<endl;
UHashFunc2.remove(2);
L=UHashFunc2.GetLoadFactor();
cout << "The current load factor is : " << L <<endl;
x=5;
UHashFunc2.retrieve(x,name,address,age,GPA);
cout << "ID:"<<x<<endl;
cout << "Name:"<<name<<endl;
cout << "Address:"<<address<<endl;
cout << "Age:"<<age<<endl;
cout << "GPA:"<<GPA<<endl;
x=1;
UHashFunc2.retrieve(x,name,address,age,GPA);
cout << "ID:"<<x<<endl;
cout << "Name:"<<name<<endl;
cout << "Address:"<<address<<endl;
cout << "Age:"<<age<<endl;
cout << "GPA:"<<GPA<<endl;
x=50;
UHashFunc2.retrieve(x,name,address,age,GPA);
cout << "ID:"<<x<<endl;
cout << "Name:"<<name<<endl;
cout << "Address:"<<address<<endl;
cout << "Age:"<<age<<endl;
cout << "GPA:"<<GPA<<endl;
cout << "Enter The ID you want to remove from the 2nd Func"<<endl;
cin>>x;
if(UHashFunc2.remove(x))
{
L=UHashFunc2.GetLoadFactor();
cout << "The current load factor after removing a record is : " << L <<endl;
}
else
{ cout << "NOT Exist"<<endl;}
if(UHashFunc2.remove(2))
{
L=UHashFunc2.GetLoadFactor();
cout << "The current load factor after removing a record is : " << L <<endl;
}
else
{ cout << "NOT Exist"<<endl;}
UHashFunc2.insert( 45 , "Amjad" , "Nablus" , 19 , 2.0);
L=UHashFunc2.GetLoadFactor();
cout << "The current load factor after adding a record is : " << L <<endl;
if(UHashFunc2.remove(100))
{
L=UHashFunc2.GetLoadFactor();
cout << "The current load factor after removing the record is : " << L <<endl;
}
else
{ cout << "NOT Exist"<<endl;}
if(UHashFunc2.remove(9))
{
L=UHashFunc2.GetLoadFactor();
cout << "The current load factor after removing the record is : " << L <<endl;
}
else
{ cout << "NOT Exist"<<endl;}
cin>>x;
return 0;
}
断点时没有构建错误只有这些错误
First-chance exception at 0x009437bd in Hash functions.exe: 0xC0000005: Access violation reading location 0x00000001. Unhandled exception at 0x009437bd in Hash functions.exe: 0xC0000005: Access violation reading location 0x00000001. First-chance exception at 0x009437bd in Hash functions.exe: 0xC0000005: Access violation reading location 0x00000001. The thread 'Win32 Thread' (0x1e40) has exited with code -1073741510 (0xc000013a). The program '[788] Hash functions.exe: Native' has exited with code -1073741510 (0xc000013a).
最佳答案
我能够轻松重现您遇到的错误。您有一个 HF 的构造函数,它采用如下参数:
HF :: HF ( int n , int p , int a, int b)
{
size = n;
prime = p;
a = a;
b = b;
如你所见,参数名称 a 和 b 与成员变量名称完全相同。因此 HF::a 和 HF::b 永远不会被赋值。因此它们总是未初始化并且包含垃圾。因此,除了随机值之外,您什么也得不到,而您尝试执行的所有散列操作结果都不起作用。
您应该将参数名称更改为不同的名称。也许用大写字母说:
HF :: HF ( int n , int p , int A, int B)
{
size = n;
prime = p;
a = A;
b = B;
一旦我这样做了,它就解决了所有的内存损坏错误,并且它运行完了就好了。
关于c++ - 我收到此错误 "Unhandled exception at 0x009437bd in Hash functions.exe: 0xC0000005: Access violation reading location 0x00000001",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8526894/
我正在使用 Test Cafe 中使用 Resemble.JS 库的函数来比较实际屏幕截图和基本屏幕截图。在我的夹具中,我有两个测试,由于屏幕截图不匹配,两个测试都应该在报告中失败,但唯一的第一个测试
这个问题在这里已经有了答案: What does IndexOutofRangeException mean? (3 个答案) 关闭 9 年前。 string Query = "SELECT [AA
错误日志: System.TypeInitializationException was unhandled Message="The type initializer for 'MaxDavid
使用 Python 2.7 和 Django 1.10.4,我尝试将我的应用程序部署到 pythonanywhere,但我不断收到此错误。 错误日志 wsgi.py import os import
我有一个名为 Form1 的表单: 有一个 ComboBox 和一个 TextBox,当我从 ComboBox 中选择 US$ 时,它必须从数据库中检索数据并显示TextBox 中的 150。 这是我
我正在尝试制作 slider 益智游戏,但在我的 form1 中调用 myBoard.paint(e.Graphics) 时,我不断收到错误“NullReferenceException 未处理”。请
我目前正在开发一个数据库,用于跟踪停在 parking 场的车辆。但是,我在将新记录保存到数据库表时遇到了一些问题。现在我对编程还很陌生,所以我无法理解我收到的错误。我试过查找它并发现了类似的情况,但
我编写了一个 Android 应用程序 (4.4.2),它在大多数时间都能正确连接/断开 BLE 外围设备。但是,每隔一段时间我就会在 Bluetootgatt.java onClientConnec
当我尝试运行 Facebook C# SDK 附带的 WP7 示例应用程序时,我收到此异常: File or assembly name 'Microsoft.Contracts, Version=1
我正在尝试学习如何在 Scala 中使用 Try with 进行理解。 在下面的示例代码中( result1 ), 如果 for comprehension 中的最后一条语句抛出未处理的异常, 代码不
我遇到了一个小问题,在调试了所有应用程序后,我注意到这是导致问题的文件,并向我返回了 UnhandledPromiseRejection 'use strict' const connection =
我对 Java(特别是 Android)相当陌生。我试图让用户从图库中选择图像,然后应用程序会将图像从图库复制到应用程序目录中的文件夹(以及显示他们在图像按钮中选择的图片)。但是,我收到“未处理的异常
我已从 iOS SDK 4.2 升级到 iOS SDK 5.0。当我现在尝试编译当前项目时,出现以下错误。 关于这里出了什么问题的任何想法?我已经阅读了所有我能找到的“mtouch failed wi
由于我正在考虑使用 WCF,所以我认为最好只是按照一个简单的教程来尝试一下。 3 小时后,我只有一个异常(exception)要显示。它不会消失。 我排除了没有加载 app.config 的可能性。如
我正在尝试在带有 .net 4.5 的 VS 2012 中使用带有 Telerik OpenAccess 的 WCF Plain 服务。 我尝试了 telerik 开发人员手册并创建了服务和客户端。
我遇到了这个错误 Program.exe 中 0x0049b946 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000090。 错误指向这一行: // thread
对于我的 Monodroid 应用程序,我想在出现未处理的异常后执行以下操作: 将错误发送到服务器。 通知用户应用程序已崩溃(可能使用 toast 消息)。 优雅地退出应用程序。 我已经实现了#1,但
我使用 JQuery 的表排序器对表进行排序,但我遇到了空表抛出异常的问题。所以我在脚本中添加了一个条件,但现在问题出在条件上。 : $(document).ready(function ($) {
我的构造函数的目标是: 打开一个文件读入特定字符串(“%%%%%”)之间存在的所有内容将每个读取行放在一个变量(历史记录)中将最终变量添加到 char 类型的双指针 (_stories)关闭文件。 但
我正在使用 Visual Studio 2005 和 IIS 6.0.. 我在事件日志中有这个警告。我试图找到它是什么。我工作时从未经历过这个异常(exception)。可以做什么,在哪里可以做,不再
我是一名优秀的程序员,十分优秀!