高手能提示下错误原因么。。
12 个解决方案
#1
出现此问题,最大的可能就是出现了野指针或者内存越界
#2
楼上的说完了
#3
好像还有访问了不能访问的内存
#4
head.s 引导程序位置!
#5
检查一下指针吧
#6
程序问题,开始debug
#7
好像还有访问了不能访问的内存
#8
为什么我运行不了啊!!
#9
指针非法访问,野指针,越界访问。某些内存空间不可以访问
#10
你的代码贴出来,就可以知道了
#11
基本功,注意写代码规范
#12
我的代码如下,执行时总是出现,上述错误。代码是求两个字符串的最大公共子序列
#include<iostream>
#include<fstream>
#include<string>
#define N 1000
using namespace std;
int L[N][N];
string s1,s2;
string substr="";
static int len1,len2;
void Init()
{
int i,j;
/*
ifstream infile1("str1.txt");
if(!infile1)
{
cout<<"文件打开失败"<<endl;
return;
}
infile1>>s1;
infile1.close();
ifstream infile2("str2.txt");
if(!infile2)
{
cout<<"文件打开失败"<<endl;
return;
}
infile2>>s2;
infile2.close();
*/
cin>>s1;
cin>>s2;
len1=s1.length();
len2=s2.length();
for(i=0;i<=len1;i++)
for(j=0;j<=len2;j++)
L[i][j]=0;
}
void UpdateL()
{
int i,j;
for(i=1;i<=len1;i++)
for(j=1;j<=len2;j++)
if(s1[i-1]==s2[j-1]) L[i][j]=L[i-1][j-1]+1;
else
{
if(L[i][j-1]>L[i-1][j]) L[i][j]=L[i][j-1];
else L[i][j]=L[i-1][j];
}
}
void Itercompare(int li, int lj)
{
int k;
if(li==0||lj==0)
{
cout<<" 最长子串为:"<<substr<<endl;
return;
}
else
{
if(s1[li-1]==s2[lj-1])// 在数组L[][]中,字符从1开始对应
{
k=L[li][lj]-1;
substr[k]=s1[li-1];
li--;
lj--;
cout<<"**"<<substr[k];
Itercompare(li,lj);
}
else
{
if(L[li][lj-1]>L[li-1][lj])
Itercompare(li,lj-1);
else if(L[li][lj-1]<L[li-1][lj])
Itercompare(li-1,lj);
else
{
Itercompare(li,lj-1);
Itercompare(li-1,lj);
}
}
}
}
void Find_Subsequence()
{
int i,j;
i=len1;
j=len2;
Itercompare(len1,len2);
}
int main()
{
Init();
UpdateL();
/*
int i,j;
for(i=0;i<=len1;i++)
for(j=0;j<=len2;j++)
cout<<L[i][j]<<"&&&";
*/
Find_Subsequence();
return 0;
}
#include<iostream>
#include<fstream>
#include<string>
#define N 1000
using namespace std;
int L[N][N];
string s1,s2;
string substr="";
static int len1,len2;
void Init()
{
int i,j;
/*
ifstream infile1("str1.txt");
if(!infile1)
{
cout<<"文件打开失败"<<endl;
return;
}
infile1>>s1;
infile1.close();
ifstream infile2("str2.txt");
if(!infile2)
{
cout<<"文件打开失败"<<endl;
return;
}
infile2>>s2;
infile2.close();
*/
cin>>s1;
cin>>s2;
len1=s1.length();
len2=s2.length();
for(i=0;i<=len1;i++)
for(j=0;j<=len2;j++)
L[i][j]=0;
}
void UpdateL()
{
int i,j;
for(i=1;i<=len1;i++)
for(j=1;j<=len2;j++)
if(s1[i-1]==s2[j-1]) L[i][j]=L[i-1][j-1]+1;
else
{
if(L[i][j-1]>L[i-1][j]) L[i][j]=L[i][j-1];
else L[i][j]=L[i-1][j];
}
}
void Itercompare(int li, int lj)
{
int k;
if(li==0||lj==0)
{
cout<<" 最长子串为:"<<substr<<endl;
return;
}
else
{
if(s1[li-1]==s2[lj-1])// 在数组L[][]中,字符从1开始对应
{
k=L[li][lj]-1;
substr[k]=s1[li-1];
li--;
lj--;
cout<<"**"<<substr[k];
Itercompare(li,lj);
}
else
{
if(L[li][lj-1]>L[li-1][lj])
Itercompare(li,lj-1);
else if(L[li][lj-1]<L[li-1][lj])
Itercompare(li-1,lj);
else
{
Itercompare(li,lj-1);
Itercompare(li-1,lj);
}
}
}
}
void Find_Subsequence()
{
int i,j;
i=len1;
j=len2;
Itercompare(len1,len2);
}
int main()
{
Init();
UpdateL();
/*
int i,j;
for(i=0;i<=len1;i++)
for(j=0;j<=len2;j++)
cout<<L[i][j]<<"&&&";
*/
Find_Subsequence();
return 0;
}
#1
出现此问题,最大的可能就是出现了野指针或者内存越界
#2
楼上的说完了
#3
好像还有访问了不能访问的内存
#4
head.s 引导程序位置!
#5
检查一下指针吧
#6
程序问题,开始debug
#7
好像还有访问了不能访问的内存
#8
为什么我运行不了啊!!
#9
指针非法访问,野指针,越界访问。某些内存空间不可以访问
#10
你的代码贴出来,就可以知道了
#11
基本功,注意写代码规范
#12
我的代码如下,执行时总是出现,上述错误。代码是求两个字符串的最大公共子序列
#include<iostream>
#include<fstream>
#include<string>
#define N 1000
using namespace std;
int L[N][N];
string s1,s2;
string substr="";
static int len1,len2;
void Init()
{
int i,j;
/*
ifstream infile1("str1.txt");
if(!infile1)
{
cout<<"文件打开失败"<<endl;
return;
}
infile1>>s1;
infile1.close();
ifstream infile2("str2.txt");
if(!infile2)
{
cout<<"文件打开失败"<<endl;
return;
}
infile2>>s2;
infile2.close();
*/
cin>>s1;
cin>>s2;
len1=s1.length();
len2=s2.length();
for(i=0;i<=len1;i++)
for(j=0;j<=len2;j++)
L[i][j]=0;
}
void UpdateL()
{
int i,j;
for(i=1;i<=len1;i++)
for(j=1;j<=len2;j++)
if(s1[i-1]==s2[j-1]) L[i][j]=L[i-1][j-1]+1;
else
{
if(L[i][j-1]>L[i-1][j]) L[i][j]=L[i][j-1];
else L[i][j]=L[i-1][j];
}
}
void Itercompare(int li, int lj)
{
int k;
if(li==0||lj==0)
{
cout<<" 最长子串为:"<<substr<<endl;
return;
}
else
{
if(s1[li-1]==s2[lj-1])// 在数组L[][]中,字符从1开始对应
{
k=L[li][lj]-1;
substr[k]=s1[li-1];
li--;
lj--;
cout<<"**"<<substr[k];
Itercompare(li,lj);
}
else
{
if(L[li][lj-1]>L[li-1][lj])
Itercompare(li,lj-1);
else if(L[li][lj-1]<L[li-1][lj])
Itercompare(li-1,lj);
else
{
Itercompare(li,lj-1);
Itercompare(li-1,lj);
}
}
}
}
void Find_Subsequence()
{
int i,j;
i=len1;
j=len2;
Itercompare(len1,len2);
}
int main()
{
Init();
UpdateL();
/*
int i,j;
for(i=0;i<=len1;i++)
for(j=0;j<=len2;j++)
cout<<L[i][j]<<"&&&";
*/
Find_Subsequence();
return 0;
}
#include<iostream>
#include<fstream>
#include<string>
#define N 1000
using namespace std;
int L[N][N];
string s1,s2;
string substr="";
static int len1,len2;
void Init()
{
int i,j;
/*
ifstream infile1("str1.txt");
if(!infile1)
{
cout<<"文件打开失败"<<endl;
return;
}
infile1>>s1;
infile1.close();
ifstream infile2("str2.txt");
if(!infile2)
{
cout<<"文件打开失败"<<endl;
return;
}
infile2>>s2;
infile2.close();
*/
cin>>s1;
cin>>s2;
len1=s1.length();
len2=s2.length();
for(i=0;i<=len1;i++)
for(j=0;j<=len2;j++)
L[i][j]=0;
}
void UpdateL()
{
int i,j;
for(i=1;i<=len1;i++)
for(j=1;j<=len2;j++)
if(s1[i-1]==s2[j-1]) L[i][j]=L[i-1][j-1]+1;
else
{
if(L[i][j-1]>L[i-1][j]) L[i][j]=L[i][j-1];
else L[i][j]=L[i-1][j];
}
}
void Itercompare(int li, int lj)
{
int k;
if(li==0||lj==0)
{
cout<<" 最长子串为:"<<substr<<endl;
return;
}
else
{
if(s1[li-1]==s2[lj-1])// 在数组L[][]中,字符从1开始对应
{
k=L[li][lj]-1;
substr[k]=s1[li-1];
li--;
lj--;
cout<<"**"<<substr[k];
Itercompare(li,lj);
}
else
{
if(L[li][lj-1]>L[li-1][lj])
Itercompare(li,lj-1);
else if(L[li][lj-1]<L[li-1][lj])
Itercompare(li-1,lj);
else
{
Itercompare(li,lj-1);
Itercompare(li-1,lj);
}
}
}
}
void Find_Subsequence()
{
int i,j;
i=len1;
j=len2;
Itercompare(len1,len2);
}
int main()
{
Init();
UpdateL();
/*
int i,j;
for(i=0;i<=len1;i++)
for(j=0;j<=len2;j++)
cout<<L[i][j]<<"&&&";
*/
Find_Subsequence();
return 0;
}