www.5129.net > 为什么编译正确的C++程序在运行时会停止工作

为什么编译正确的C++程序在运行时会停止工作

编译只是保证没有语法错误,但是不能保证你的程序的算法没有错误,如果你的程序中有比较严重的Bug,如果说访问了系统保护的内存,出于保护,windows会中止你的程序,或是抛出一个异常,如果异常没有被捕获并加以处理,程序也会中止,当然,这时...

这个要一步步的debug的,编程最麻烦的不是写一个能够通过编译的代码,而是一步步debug代码实现最终的需求。debug有很多方式,如果你是初学者,printf 也是一种debug的方式。 当然,学会用vs上面的单步调试和linux下的gdb也是你以后一定需要的。

这个是指针越界的提示。 if(head=NULL) 这里判断相等应该是两个等号

你确定是编译器停止工作,不是你自己编的程序?

1.通常的原因是,你试用了系统未分配给你的内存,例如: int * a; printf(“%d\n”, *a); 出现你说的那种情况,你虽定义了a变量但是a是个指针变量所以*a是a变量内存放地址的内容,但是你并未对编译器声明对该内存的使用所以系统会把它当作类似...

大致浏览了一下,没有发现明显错误。 这种情况,就需要调试了。F5执行程序,遇到运行警告后中断,通过调用堆栈查看具体问题代码行。之后,通过变量观察、设置断点、单步执行等方式,查找具体问题。 编译链接无误,只是没有语法错误,运行时错误...

你第一次循环的时候这句话会导致崩溃 fence = fence->next->beforep = new Node(a,NULL); 因为第一次循环的时候fence指向的是head,head的next是NULL,对NULL调用fence->next->beforep,会导致程序崩溃。

a[sum] = i; 这里,sum有可能大于max,造成了大量的非法地址操作。

贴代码上来,一运行就崩溃是初始化的问题,推测的原因如下 1、主函数内部初始化的数组过大,如: int num[100000000]; 会崩溃,要写int *num = new int[100000000]; 2、结构体指针为空,但调用了其成员,如: NODE* node; node->next....... 应...

一般情况都是数据溢出,超出数组边界或者使用野指针

网站地图

All rights reserved Powered by www.5129.net

copyright ©right 2010-2021。
www.5129.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com