一、局部数组过大。当函数内部的数组过大时,有可能导致堆栈溢出。

例如:

#include <stdio.h> #define SIZE 1 * 1024 * 1024 int main() { int b[SIZE]; int
i; for(i = 0; i < SIZE; ++i){ b[i] = i; } for(i = 0; i < SIZE; ++i){
printf("%d", b[i]); } return 0; }
二、递归调用层次太多。递归函数在运行时会执行压栈操作,当压栈次数太多时,也会导致堆栈溢出。

#include <stdio.h> int Sum(const unsigned int n) { printf("now n is %u\n", n);
if(0 == n || 1 == n){ return n; } return n + Sum(n - 1); } int main() {
unsigned int n; printf("Input n: "); scanf("%d", &n); printf("The sum of 1 to
%u is %u\n", n, Sum(n)); return 0; }
三、指针或数组越界。这种情况最常见,例如进行字符串拷贝,或处理用户输入等等。

四、没有垃圾回收。

技术
©2019-2020 Toolsou All rights reserved,
基于神经网络的车辆牌照字符识别技术Java基础(三) String深度解析 dedecms网站被黑 劫持到其他网站如何解决精准手机号抓取,运营商大数据利用梆梆加固逻辑漏洞取巧脱壳QT 删除目录及文件Java小明A+B苹果不送充填器耳机真为环保?可能还是为了赚钱吧在Pytorch上使用summaryC#中字典的排序方法