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

如题所述

内存分配的问题,野指针,或是循环越界都很容易出现这种问题
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)); 之前,
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-19
int *a=(int *)malloc(Q*sizeof(int));
int *b=(int *)malloc(Q*sizeof(int));

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

???那怎么处理

追答

if(i=j)G[101][101]=0;

你的数组越界了。最大只能是G[100][100]
你给的代码不全?

下面两句注释掉
int *a=(int *)malloc(Q*sizeof(int));
int *b=(int *)malloc(Q*sizeof(int));

追问

你邮箱给个?我发给你看看

追答

782226833@qq.com

本回答被网友采纳
第2个回答  2011-11-19
内存分配错误吧,检查程序追问

我程序发给你看下。。。行不?

追答

试试吧

追问

#include
#include
#define max 1000000
int main()
{
int G[101][101],N,M,Q,A,B,C;
int i,j,k;
int *a=(int *)malloc(Q*sizeof(int));
int *b=(int *)malloc(Q*sizeof(int));
scanf("%d%d%d",&N,&M,&Q);

for(i= 1;i <= N;i++)
for(j = 1;j <= N;j++)
if(i=j)G[101][101]=0;
else
G[i][j] = max;

我用VC6.0编译以下代码,编译中没显示错误,但只显示printf中的内容,输 ...
这是因为你的程序一直符合while( proft > 0),所以它就一直在环体内循环 你应该给它来个,printf(),再break;

为什么用vc6.0编程的时候时常出现错误,我的电脑是笔记本。编译连接都...
大致是两种问题:1是你的指针定义后没有分配内存,也就是没有new和delete;2是你分配的内存过小,在运行时越界了,比如分配10个整形的内存,但是你赋值的时候给10个以上的地址赋值,这种情况经常发生,例如new a[10],实际上你只能给a[0]-a[9]赋值,如果给a[10]赋值就会错误,也就是所谓的内存...

高手请进 VC6.0 整天都是 执行 cl.exe 时出错 代码写好了还是不能按感 ...
选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\\VC98\\Bin”下面,你可以到相应的路径下找到这个应用程序。因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)”—>“Directories(...

为什么我的VC6.0 点文件 打开就自动关闭了呢?
最简单也是最有用的办法就是运行编译连接好的exe时不要按F5运行!这样会计算出结果后秒退!解决办法是按Ctrl+F5运行!就会出现press any key to continu然后输入任意键结束

用VC++6.0编译以后,运行时出现的那个窗口会停留,为什么去点那个.exe...
因为用VC运行,那个是为了方便调试而这样做的,看退出的代码是什么,而你运行。EXE那才是你真正的程序没有其它的程序调试

我的VC6.0编号程序后一运行就出现This file does not exsit,Do you wa...
实际上这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\\VC98\\Bin”下面,你可以到相应的路径下找到这个应用程序。因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)”—>“Directories(目录)”重新...

C语言求海伦公式的问题(VC6.0),编译没错运行却出错!
a,b,c应该为double a,b,c;因为输入时用%f输入了。area 应为float,因为%f输出的是浮点型,所以应该将 area 定义为 float,而不是int。s改为float或者double都可以。如果s是 int 型的话,那么s=(a+b+c)\/2得到的结果是一个不精确整数,比如a=3,b=4,c=4;s应该为5.5,但由于s是int 型...

为什么我的vc6.0不管有错少错误,有没有错误甚至空白页进行编译时总显示...
如果时的话,是因为路径有错误导致软件找不到CL.exe,无法成功编译。可以参考百度经验解决:WIN10安装VC++6.0并解决三个兼容问题 VC++6.0是微软于1998年发布的程序软件,如果是在xp系统上安装,可以直接运行,如果是在WIN7\/8和WIN10上安装会出现以下三个兼容性问题:1、VC++6.0在win10(7\/8)上...

vc6.0调试时一直出现这个问题,有时候编译没问题,调试的时候却会报错,错...
这个问题比较常见的。首先又可能是以下几点原因:1:前一个程序没有关闭,又新建了一个程序。2:强制关闭此程序,在打开一下VC6.0,把程序复制过去,可以解决 3:你VC6.0安装程序出现错误,文件组缺少一些必要的文件 4:你的程序出现错误,计算的数组内存不满足 ...

求高手赐教VC6.0 编译通过后,结果为什么一闪而过,
是你输入的数据不正确吧,我测试了输入 12 2 不会有问题,但是如果输入的超过了int存储的大小会出错直接退出,最好加个判断判断a和b的值在int表示的范围内,不知道是不是这个原因,你试一下,希望能帮到你

相似回答