作业帮 > 综合 > 作业

ACM HDU 1002 A + B Problem II Runtime Error(ACCESS_VIOLATION

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 19:35:54
ACM HDU 1002 A + B Problem II Runtime Error(ACCESS_VIOLATION) .
直接上代码:
#include
using namespace std;
#define MAX 2000
int * StrtoInt(char * str)
{
\x09int i,len=strlen(str);
\x09int *a=new int[(len+1)*sizeof(int)];
\x09for(i=0;i1) len--;
\x09for(k=0;k=10)
\x09\x09{
\x09\x09\x09a[k+1]=a[k+1]+a[k]/10;
\x09\x09\x09a[k]=a[k]%10;
\x09\x09}
\x09}
\x09if(a[k]!=0) len=k+1;
\x09return len;
}
char * InttoStr(int * a,int n)
{
\x09int i;
\x09char * str=new char[(n+1)*sizeof(char)];
\x09for(i=0;i=len2)?len1:len2;
\x09t1=new int[(len+2)*sizeof(int)];
\x09t2=new int[(len+2)*sizeof(int)];
\x09t1=StrtoInt(m1);
\x09t2=StrtoInt(m2);
\x09for(i=len1;i>a>>b;
\x09\x09c=addition(a,b);
\x09\x09if(!isfirst) cout
untime  error (运行时错误)就是程序运行到一半,程序就崩溃了.
比如说:
①除以零
②数组越界:int a[3]; a[10000000]=10;
③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10;
④使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10;
⑤数组开得太大,超出了栈的范围,造成栈溢出:int a[100000000]; 
如果你用的是 Windows XP 操作系统,那么Runtime Error 的界面一般如下:

再问: ...我知道runtime error的意思...我想问的是...代码哪部分出错
再答: 自己看看addition函数 t1=new int[(len+2)*sizeof(int)]; t2=new int[(len+2)*sizeof(int)]; new完之后都不delete,可是main又一直while循环调用addition,内存早就被挤爆了。
再问: 额 我觉得问题不在这里.. 我运算2个1000位的大数 N个 case 都正常... 特殊情况是... VC++6.0 1234567891234567 5 通过 12345678912345678 3 通过 123456789123456789 3 不通过 12345678912345678 5 不通过 VS 1234567891234 5 通过 12345678912345 3 通过 123456789123456 3 不通过 12345678912345 5 不通过 错误消息是栈出了问题... 不知道怎么修改才可以
再答: /* * 杭电1002 A + B Problem II * * 2011年7月25日 */ #include #include #include using namespace std; inline string add(string &a, string &b) { string c(""); int lena, lenb, minlen; register int i,carry,temp; lena=a.length(); lenb=b.length(); if(lena>lenb) { minlen=lenb; } else { minlen=lena; } reverse(a.begin(),a.end()); reverse(b.begin(),b.end()); carry=temp=0; for(i=0; ilenb) { while(i cases; for(i=1; i> a >> b; cout