为什么我的软件vc6.0编译时没什么问题,到运行时输入数据反应很慢,然后就自己跳出已停止工作的对话框??

2025-03-03 17:32:09
推荐回答(3个)
回答1:

内存分配的问题,野指针,或是循环越界都很容易出现这种问题
int main(){}里面代码顺序执行,
也就是先
int *a=(int *)malloc(Q*sizeof(int));
int *b=(int *)malloc(Q*sizeof(int)); 再接收你的Q赋值;C语言中malloc只管分配内存,所以在Q未知的情况下先分配内存,这样做很危险、
if(i=j)G[101][101]=0;
这句你,=表示的是赋值,==表示逻辑相等;
你程序的意思应该是if(i==j)G[i][j]=0; 没看懂你循环赋值的意思。。
如果你要改的话可以先把scanf("%d%d%d",&N,&M,&Q);放在
int *a=(int *)malloc(Q*sizeof(int));
int *b=(int *)malloc(Q*sizeof(int)); 之前,

回答2:

int *a=(int *)malloc(Q*sizeof(int));
int *b=(int *)malloc(Q*sizeof(int));

你的Q还没初始化 就使用 这个数很大 所以分配的空间很大。

回答3:

内存分配错误吧,检查程序