做杭电acm题目时提交的代码出现ACCESS_VIOLATION错误。

请问ACCESS_VIOLATION错误是什么错误?举例说明。

ACCESS_VIOLATION
Your program tried to read from or write to a address for which it does not have the appropriate access.
您的程序想从一些非法的地址空间读取或向其中写入内容。一般例如指针、数组下标越界都会造成这个错误的。
还有个新手常犯的错误会造成这个提示:
int a;
scanf("%d",a);
应该写成
scanf("%d",&a);
你检查下,如果不是这个错误,基本上是数组或者指针越界了。追问

什么是数组或指针越界了

追答

读取的内存为非法内存。比如你定义了一个数组a[10],你在使用的时候却用到了a[20],显然是越界了,指针也是类似的情况,引用了不可访问的内存空间

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-31
ls说的对追问

什么是数组或指针越界了

做杭电acm题目时提交的代码出现ACCESS_VIOLATION错误。
您的程序想从一些非法的地址空间读取或向其中写入内容。一般例如指针、数组下标越界都会造成这个错误的。还有个新手常犯的错误会造成这个提示:int a;scanf("%d",a);应该写成 scanf("%d",&a);你检查下,如果不是这个错误,基本上是数组或者指针越界了。

杭电acm总是Runtime Error (ACCESS_VIOLATION)
可以用传递数组元素个数的方法解决即:用两个实参,一个是数组名,一个是数组的长度。runtime error (运行时错误)就是程序运行到一半,程序就崩溃了。比如说:除以零 数组越界:int a[3]; a[10000000]=10 指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10 ...

杭电ACM Runtime Error(ACCESS_VIOLATION) 求解
include<stdio.h> void main(){ int a,b,n,i,k[2005],t;while(scanf("%d %d %d",&a,&b,&n)!=EOF&&(a!=0||b!=0||n!=0)){ k[0]=1;k[1]=1;for(i=2;i<=1008;i++)k[i]=(b*k[i-2]+a*k[i-1])%7;for(i=2;i<=1008;i++)if(k[i-1]==1&&k[i]==1...

杭电acm2023,Runtime Error (ACCESS_VIOLATION)?
\/\/***\/\/ 杭电2023 求平均成绩 代码已AC\/\/ n(n<=50)个学生,每人考m(m<=5)门课 \/\/ 注意这个循环 for(i = 1; i <= n; i++) \/\/ 已经使用到 n 所以数组a 应该设置大一点,即 a[51][6] \/\/ 另外一个问题就是 每次循环后count1 没有重新置零 \/\/***...

杭电acm3790 ACCESS_VIOLATION,帮忙找下错,哪儿非法访问了。
错误是delete[] p产生的。include <iostream> using namespace std;unsigned int *p(NULL);unsigned int dijkstra(int n,int start,int end){ bool* min = new bool[n+1];unsigned int *length=new unsigned[n+1];memset(min,0,sizeof(bool)*(n+1) );memset(length,UINT_MAX,sizeof(...

...但是提交后提示Runtime Error (ACCESS_VIOLATION)
这题可以用二分求幂来做的。构造一个矩阵每次都是一个矩阵的转移。然后可以用二分。当然也是有周期的。最大的周期是49 因为这些数字都是要7的范围内 如果有两个数字连续一样的话,后面的数字就会和前面重复 f[i]==f[i+k]&&f[i+1]==f[i+1+k]这样的话后面就会重复的 \/\/此题是一个很...

杭电acm 一直显示Runtime Error (ACCESS_VIOLATION) http:\/\/acm.hdu...
数组开小了。。你的代码这样改就AC了。。include<stdio.h> include<string.h> int main(){ int n;char zifu[1000];int i;scanf("%d",&n);getchar();for(i=0;i<n;i++){ int j,count=0;gets(zifu);for(j=0;j<strlen(zifu);j++){ if(zifu[j]<0)count++;} printf("%d\\n"...

杭电acm1003为什么都过不了,显示Runtime Error(ACCESS_VIOLATION)
你的 mm 没有赋初值,所以会Runtime Error 还有就是 while的循环结束条件不足,如果到最后 m还是没有==0你就错了 这是ac的代码 include

...杭电ACM上就显示runtime,error ACCESS_VIOLATION,求大神讲解_百度知 ...
char string_color[1000][15];char *string_num_max1[1000];可能是堆栈大小的问题,你这些变量都是在堆栈里分配的,换成动态分配试试.

...Error(ACCESS_VIOLATION),我测试结果没问题啊!求大神指教!
Runtime Error一般是数组越界, 可能你数组定义小了

相似回答
大家正在搜