CSAPP:runaway(gcc)

查看电脑中所分配栈的大小。

代码全览

/* Example of deep recursion */
#include <stdio.h>
#include <stdlib.h>
int recurse(int x) {
    int a[1<<15];  /* 4 * 2^15 =  64 KB */
    printf("x = %d.  a at %p\n", x, a);
    a[0] = (1<<14)-1;
    a[a[0]] = x-1;
    if (a[a[0]] == 0)
 return -1;
    return recurse(a[a[0]]) - 1;
}
int main(int argc, char *argv[]) {
    int x = 100;
    if (argc > 1)
 x = atoi(argv[1]);
    int v = recurse(x);
    printf("x = %d.  recurse(x) = %d\n", x, v);
    return 0;
}

运行结果

suiyi@suiyi-virtual-machine:/mnt/hgfs/share/runaway$ ./a.out
x = 100.  a at 0x7ffeb78d4f50
x = 99.  a at 0x7ffeb78b4f20
x = 98.  a at 0x7ffeb7894ef0
x = 97.  a at 0x7ffeb7874ec0
x = 96.  a at 0x7ffeb7854e90
x = 95.  a at 0x7ffeb7834e60
x = 94.  a at 0x7ffeb7814e30
x = 93.  a at 0x7ffeb77f4e00
x = 92.  a at 0x7ffeb77d4dd0
x = 91.  a at 0x7ffeb77b4da0
x = 90.  a at 0x7ffeb7794d70
x = 89.  a at 0x7ffeb7774d40
x = 88.  a at 0x7ffeb7754d10
x = 87.  a at 0x7ffeb7734ce0
x = 86.  a at 0x7ffeb7714cb0
x = 85.  a at 0x7ffeb76f4c80
x = 84.  a at 0x7ffeb76d4c50
x = 83.  a at 0x7ffeb76b4c20
x = 82.  a at 0x7ffeb7694bf0
x = 81.  a at 0x7ffeb7674bc0
x = 80.  a at 0x7ffeb7654b90
x = 79.  a at 0x7ffeb7634b60
x = 78.  a at 0x7ffeb7614b30
x = 77.  a at 0x7ffeb75f4b00
x = 76.  a at 0x7ffeb75d4ad0
x = 75.  a at 0x7ffeb75b4aa0
x = 74.  a at 0x7ffeb7594a70
x = 73.  a at 0x7ffeb7574a40
x = 72.  a at 0x7ffeb7554a10
x = 71.  a at 0x7ffeb75349e0
x = 70.  a at 0x7ffeb75149b0
x = 69.  a at 0x7ffeb74f4980
x = 68.  a at 0x7ffeb74d4950
x = 67.  a at 0x7ffeb74b4920
x = 66.  a at 0x7ffeb74948f0
x = 65.  a at 0x7ffeb74748c0
x = 64.  a at 0x7ffeb7454890
x = 63.  a at 0x7ffeb7434860
x = 62.  a at 0x7ffeb7414830
x = 61.  a at 0x7ffeb73f4800
x = 60.  a at 0x7ffeb73d47d0
x = 59.  a at 0x7ffeb73b47a0
x = 58.  a at 0x7ffeb7394770
x = 57.  a at 0x7ffeb7374740
x = 56.  a at 0x7ffeb7354710
x = 55.  a at 0x7ffeb73346e0
x = 54.  a at 0x7ffeb73146b0
x = 53.  a at 0x7ffeb72f4680
x = 52.  a at 0x7ffeb72d4650
x = 51.  a at 0x7ffeb72b4620
x = 50.  a at 0x7ffeb72945f0
x = 49.  a at 0x7ffeb72745c0
x = 48.  a at 0x7ffeb7254590
x = 47.  a at 0x7ffeb7234560
x = 46.  a at 0x7ffeb7214530
x = 45.  a at 0x7ffeb71f4500
x = 44.  a at 0x7ffeb71d44d0
x = 43.  a at 0x7ffeb71b44a0
x = 42.  a at 0x7ffeb7194470
x = 41.  a at 0x7ffeb7174440
x = 40.  a at 0x7ffeb7154410
x = 39.  a at 0x7ffeb71343e0
x = 38.  a at 0x7ffeb71143b0
段错误 (核心已转储)
suiyi@suiyi-virtual-machine:/mnt/hgfs/share/runaway$ ./a.out 38
x = 38.  a at 0x7ffe3b85a270
x = 37.  a at 0x7ffe3b83a240
x = 36.  a at 0x7ffe3b81a210
x = 35.  a at 0x7ffe3b7fa1e0
x = 34.  a at 0x7ffe3b7da1b0
x = 33.  a at 0x7ffe3b7ba180
x = 32.  a at 0x7ffe3b79a150
x = 31.  a at 0x7ffe3b77a120
x = 30.  a at 0x7ffe3b75a0f0
x = 29.  a at 0x7ffe3b73a0c0
x = 28.  a at 0x7ffe3b71a090
x = 27.  a at 0x7ffe3b6fa060
x = 26.  a at 0x7ffe3b6da030
x = 25.  a at 0x7ffe3b6ba000
x = 24.  a at 0x7ffe3b699fd0
x = 23.  a at 0x7ffe3b679fa0
x = 22.  a at 0x7ffe3b659f70
x = 21.  a at 0x7ffe3b639f40
x = 20.  a at 0x7ffe3b619f10
x = 19.  a at 0x7ffe3b5f9ee0
x = 18.  a at 0x7ffe3b5d9eb0
x = 17.  a at 0x7ffe3b5b9e80
x = 16.  a at 0x7ffe3b599e50
x = 15.  a at 0x7ffe3b579e20
x = 14.  a at 0x7ffe3b559df0
x = 13.  a at 0x7ffe3b539dc0
x = 12.  a at 0x7ffe3b519d90
x = 11.  a at 0x7ffe3b4f9d60
x = 10.  a at 0x7ffe3b4d9d30
x = 9.  a at 0x7ffe3b4b9d00
x = 8.  a at 0x7ffe3b499cd0
x = 7.  a at 0x7ffe3b479ca0
x = 6.  a at 0x7ffe3b459c70
x = 5.  a at 0x7ffe3b439c40
x = 4.  a at 0x7ffe3b419c10
x = 3.  a at 0x7ffe3b3f9be0
x = 2.  a at 0x7ffe3b3d9bb0
x = 1.  a at 0x7ffe3b3b9b80
x = 38.  recurse(x) = -38
suiyi@suiyi-virtual-machine:/mnt/hgfs/share/runaway$ ./a.out 6
x = 6.  a at 0x7fff7442d560
x = 5.  a at 0x7fff7440d530
x = 4.  a at 0x7fff743ed500
x = 3.  a at 0x7fff743cd4d0
x = 2.  a at 0x7fff743ad4a0
x = 1.  a at 0x7fff7438d470
x = 6.  recurse(x) = -6
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值