hello大家好,我是大学网网小航来为大家解答以上问题,电脑老是死机是什么原因造成的,一个重要原因剖析很多人还不知道,现在让我们一起来看看吧!
电脑经常死机,其实很多原因都是堆栈的里面的指针错误的指向有关,那么这些都是些啥玩意,这么神奇导致了,能把电脑给搞死?下面针对里面的一些内部原因做下剖析,看看能不能解决大家的疑惑。
其实栈空间也是一块内存,只不过这块内存在应用起来的时候,由加载器loader负责向系统申请,应用程序不用操心这个事情。而内存的大小一般在编译的时候就决定了,编译器环境一般有可配置修改,但基本采用默认大小。所以不管哪种,一个应用程序的栈空间都是有限的。
因此不要在栈上使用大量的空间,比如开辟很大的数组,递归函数的深度太大等等,都可能导致栈溢出,具体多大合适,要根据该线程的实际情况去分析,尤其是在嵌入式系统上更要注意,尽量做到既能保证线程正常工作,还要保证尽可能少用内存资源。
1,较大的数组,如果直接在函数中定义数组,则数组空间就会从栈中分配,比如int arr[1024];这个要放在函数中,则会占用4K的栈空间。如果需要这样的大空间,完全可以在堆上分配,大块的空间刚好适合堆分配的情况。
2,深度较大的递归,尤其是对递归的运行不太了解的情况,可能会有数千次甚至更多的调用,哪怕是函数中的自动变量不多,但是积累起来就不可小觑了。如果实在遇到这种嵌套的情况,应尽量改成非递归的调用方式。
如果对编程感兴趣,想了解更多的编程知识,解决编程问题,以及入门指导,帮你解决编程中遇到的困惑,我们这里有java高手,C /C高手,windows/Linux高手,android/ios高手,请大家关注程序员互动联盟或者coder_online,关注后输入关键字 zx获取编程自学手册
本文属原创,禁止转载,谢谢
本文就为大家讲解到这里,希望对大家有所帮助。
免责声明:本文由用户上传,如有侵权请联系删除!