为什么这段C程序会崩溃?

作者&投稿:邬樊 (若有异议请与网页底部的电邮联系)
一个C语言程序,为什么运行就崩溃~

这种情况叫做 runtime error (运行时错误)。

在 Windows 7 上这样提示:


在 Windows XP 上这样提示:


runtime error (运行时错误)就是程序运行到一半,程序就崩溃了。
比如说:
①除以零
②数组越界:int a[3]; a[10000000]=10;
③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10;
④使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10;
⑤数组开得太大,超出了栈的范围,造成栈溢出:int a[100000000]

主要问题应该是连接后的字符串超过了数组的定义,造成程序运行结果的不确定。
用char a[100]="heheuuu";这样的定义,可防止合并后长度在99以内的情况出现此类错误。

这是个好问题,首先,p,q指向的都是静态区。也就是说,他们指向的地方不能被修改。
其实出问题主要是出在第二个strcpy。如果要修改的话可以这样
char p[]="hello";
char q[]="how are you";


这段c程序(字符串连接)为何崩溃?
主要问题应该是连接后的字符串超过了数组的定义,造成程序运行结果的不确定。用char a[100]="heheuuu";这样的定义,可防止合并后长度在99以内的情况出现此类错误。

C语言中,程序为什么会崩溃?
1. 程序陷入死循环:程序在某个地方出现了死循环,使得程序无法继续向下执行。如果程序似乎无法结束,可以检查程序是否存在死循环。2. 内存泄露:程序在使用动态内存分配函数(如malloc、calloc)等开辟内存空间时,没有及时释放所分配的内存空间,导致内存泄露。内存泄露会导致系统内存资源的浪费,最终导致程序...

C程序为什么会崩溃?
C语言程序运行出现exe停止工作的原因是因为内存溢出和编译器错误。第一种:内存溢出 内存溢出(out of memory)通俗理解就是内存不够,程序所需要的内存远远超出了主机内安装的内存所承受大小,就叫内存溢出。系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软...

为什么这段C程序会崩溃?
这是个好问题,首先,p,q指向的都是静态区。也就是说,他们指向的地方不能被修改。其实出问题主要是出在第二个strcpy。如果要修改的话可以这样 char p[]="hello";char q[]="how are you";

C语言 这个程序怎么运行就崩溃?
int i,j=0;只是初始化了变量j=0;而i没有初始化,是一个很大的值。所以在执行for(;s1[i]!='\\0';i++){}时,由于i很大,超过了str1[80]的长度,所以导致访问异常。改为:int i=0,j=0;就可以了。不过这段程序还有问题,就是如果str1的长度和str2的长度之和大于str1[80]定义的80个...

为什么这个c语言会崩溃?
你好,我用VS试过了,没有任何问题 所以应该是你编译器的问题,换一个编译器或重新下载试试~

求大神帮忙看一下这段C语言代码哪有问题,自己做的一道编程题_百度知 ...
原因:char *d[100];scanf("%d",&n);for(i=0;i<n;i++)scanf("%s",d[i]);没有给d这个数组中的各元素分配存储空间(也即d[0]到d[99]这100个指针变量指向不明确),又强行给这个元素指向的地址写入值 所以,程序崩溃 char *d[100];改成 char d[100][100];即可 运行结果:...

这个c语言代码哪里出问题了?一运行就崩溃
正确的用法是,编译成.exe文件后,在DOS窗口中进入这个.exe文件所在目录,然后输入“这个.exe文件名 输入文件名字 输出文件名 回车”才行。比如我编译好的文件名是1.exe,输入文件名是input.txt,准备输出的文件叫out.txt,那么就不会崩溃了,如图 要避免没有输入参数崩溃的情况,可以在程序中进行文件...

C语言数据结构,这段代码运行为什么会崩溃呢
{ int num;int nod;struct LNode *next;}LNode, *LinkList;LinkList InitList(int n){ int i;LinkList h,m,t;t=(LinkList)malloc(sizeof(LNode));t->nod=0;m=t;for(i=1;i<(n+1);i++){ int a;h=(LinkList)malloc(sizeof(LNode));scanf("%d",&a);h->num=i;h->nod...

c语言字符串编程,为什么这个程序运行会崩溃?
char word[]=""是声明了一个长度为1的char类型数组,而在调用scanf函数的时候自然会溢出崩溃。我写了一个程序应该能有 include <stdio.h> int main(){ char ch; \/\/每次读取字符的buffer int count = 0; \/\/单词长度 while(1){ scanf("%c", &ch); \/\/读取字符 if(ch == '.'){ ...

泉州市17810457657: 这个C程序为什么运行崩溃? -
菜科冠心: 等效于 typedef struct node*windows; 所以 windows a[10] 就是 struct node* a[10]; a的每个元素都是指针. 而你又没有分配内存,自然直接输入时会导致程序崩溃.

泉州市17810457657: 为什么c语言编程时会崩溃
菜科冠心: 那是你写的代码有问题,虽然能编译连接,但是运行时有错.举个很简单的例子如: int *p; *p = 5; 这两句代码没有语法错误,能编译连接通过,但是程序会崩溃.如果还有那种问题的话,仔细检查一下你的代码,不行就贴出来看看

泉州市17810457657: 为什么这一段C程序一运行就崩溃,显示没有错误,但一运行就是EXE停止工作. -
菜科冠心: 默认的"love"和"china"是const变量,位于不可写的区域,strcat就非法访问不行 可以改为char p[20] = "love"; 这样p可写并且空间也足够不至于strcat就越界了

泉州市17810457657: C语言 程序能运行,但是有时运行中间会崩溃,一般因为什么?怎么解决? -
菜科冠心: 程序设计的很重要一点就是要保证程序的稳定性,运行时崩溃就是稳定性不够,一般比较常见的就是数据类型不符、内存泄漏等错误造成的.还有,C语言的稳定性上一般也是比较差的

泉州市17810457657: 为什么这个c语言会崩溃? -
菜科冠心: 你好,我用VS试过了,没有任何问题 所以应该是你编译器的问题,换一个编译器或重新下载试试~

泉州市17810457657: C语言程序一运行就崩溃是什么情况 -
菜科冠心: 这种情况叫做 runtime error (运行时错误).在 Windows 7 上这样提示:在 Windows XP 上这样提示:runtime error (运行时错误)就是程序运行到一半,程序就崩溃了.比如说:①除以零 ②数组越界:int a[3]; a[10000000]=10; ③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10; ④使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10; ⑤数组开得太大,超出了栈的范围,造成栈溢出:int a[100000000]

泉州市17810457657: 一小段C/C++的代码,会崩溃,好奇想知道过中原因,大神们帮忙看看,谢啦! -
菜科冠心: 调用 fun(height--) 的时候还是传了参数 1,--是调用后才执行的,因此又调用了 fun(1),如此往复会死循环递归 fun(1),每次调用都会增加一个栈帧,一个程序的缺省栈空间只有宝贵的 1 M,递归调用个几百次通常就会发生栈溢出从而崩溃.

泉州市17810457657: C语言求解.为什么会崩溃的..!! -
菜科冠心: include void main() { int a,b,sum; printf ("press a and b\n"); scanf ("%d,%d",&a,&b);//这里改 sum=a+b; printf ("sum is %d\n",sum); } 赋值是要取地址运算

泉州市17810457657: c语言字符串编程,为什么这个程序运行会崩溃? -
菜科冠心: char word[]=""是声明了一个长度为1的char类型数组,而在调用scanf函数的时候自然会溢出崩溃.我写了一个程序应该能有#include int main() { char ch; //每次读取字符的buffer int count = 0; //单词长度 while(1) { scanf("%c", &ch); //读取字符...

泉州市17810457657: 写了个C语言程序,编译没错.运行后总是崩溃,怎么回事啊? -
菜科冠心: scanf("%c", p[i].name); scanf("%f", p[i].score); 请问这两句对吗?scanf函数后边是参数地址,不是参数本身.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网