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

 我来答
breathss
2011-11-19
知道答主
回答量:14
采纳率:0%
帮助的人:10.5万
展开全部
内存分配的问题,野指针,或是循环越界都很容易出现这种问题
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)); 之前,
lxa520
2011-11-19 · TA获得超过236个赞
知道小有建树答主
回答量:231
采纳率:0%
帮助的人:183万
展开全部
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));
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5b601e5
2011-11-19 · 超过20用户采纳过TA的回答
知道答主
回答量:127
采纳率:100%
帮助的人:31.2万
展开全部
内存分配错误吧,检查程序
更多追问追答
追问
我程序发给你看下。。。行不?
追答
试试吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式