当前位置:首页 » 编程语言 » 怎么让c语言崩溃
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

怎么让c语言崩溃

发布时间: 2023-05-15 10:59:56

㈠ C程序为什么会崩溃

c语言程序运行出现exe停止工作的原因是因为内存溢出和编译器错误。

第一种:内存溢出

内存溢出(out of memory)通俗理解就是内存不够,程序所需要的内存远远超出了主机内安装的内存所承受大小,就叫内存溢出。系统会提好培示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软件。

第二种:编译器错误

部分编译器由于所使用的标准不同(例如在一台机器上使用的可能是C99标准,而另一台机器上使用的是C11标准),或是因为编译器链接库的损坏,在少数情况下也可能导致程序出现不限于崩溃退出的异常错误,通常解决方法是到编译器官方网站下载最新版的IDE安装。

举例说明:

1、除以零。

2、数组越界:int a[3]; a[10000000]=10。

3、指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10。

4、使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10。

5、数组开得太大,超出了栈的范围,造成栈溢出:int a[100000000],没有开辟内存 List L=(List)malloc(sizeof(struct LNode))。runtimeerror(运行时错误)就是程序运行到一半,程序就崩溃了。

(1)怎么让c语言崩溃扩展阅读:

C特有特点:

1、C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。

2、C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。

3、不同的变量类型可以用结构体(struct)组合在一起。

4、只有32个保留字(缺袜数reserved keywords),使变伏首量、函数命名有更多弹性。

5、部份的变量类型可以转换,例如整型和字符型变量。

6、通过指针(pointer),C语言可以容易的对存储器进行低级控制。

7、预编译处理(preprocessor)让C语言的编译更具有弹性。

㈡ 怎样用C语言编写一个程序能够使系统崩溃这是我参加笔试的一个题目,希望高手能给帮助,感激不尽!

//不哗迅断地该系统分配内存,直乱嫌此到溢出,为测试这东西害我死机了,多少意思一下哦 ^0 0^
#include<stdio.h>者液
#include<stdlib.h>

int main()
{
int *die;
int t = 1;
while(1)
{
t++;
die = (int*)malloc(1024*1024*t);
}
return 0;
}

㈢ C语言如何停止运行

一般都是用Ctr+c来停止。如果是程序内部的话,可以在main函数里面使用return,或者用exit()都可以让程序停止运行。

㈣ c语言编程程序崩溃

同学,你是对c语言的按值传递理解不到位。

void s ( int * p_c )
{
p_contemp = ( int * ) malloc ( 5 * sizeof ( int ) )
此处为for循环控制语句依次给数组依次输入5个数
}
你最初的代码,s ( int * p_c )中,你用malloc 分配了5个int的空间,把此空间的地址赋给了p_contemp,而没有赋给指针p_c,所以p_c指向空,在main()中调用a . h_p
会出错,其为空指针。

而且就算你在s ( int * p_c )中,把malloc 分配的5个int的空间的地址赋给s的参数p_c指针,在main()中,调用a . h_p ,仍然会出错,a . h_p 仍然为空指针。
因为在c语言中函数的参数是按值传递的,即在本题中,你把a . h_p 作为实参传递给s ( int * p_c )函数,此时a.h_p为空指针,根据按值传递规则,形参p_c将与实a.h_p具有相同的值:空。
在s ( int * p_c )内,( int * ) malloc ( 5 * sizeof ( int ) )执行后,把分配到的空间地址赋给形参p_c,此时形参p_c不为空了,但是根据按值传递原则,实参所指向的地址没变,仍为空。

你所谓的“指针传递只要改一个,另一个的内容应该也做了改动”是对的,但是你的代码写的不对。你可以在函数外面弄一个指向某个地址的指针,把它传给一个参数为指针的函数,在函数内修改指针指向的内容,则在函数外实参指针指向的内容也会变。

你也可以考虑用c++的引用传递,即把你最初的s ( int * p_c )声明为s ( int * &p_c ),其它代码不变,就能看到你想要的效果。