硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1126|回复: 3
收起左侧

[技术讨论] keil的坑:C库快速排序qsort导致堆栈溢出

[复制链接]

10

主题

75

回帖

120

积分

初级会员

积分
120
发表于 2024-11-7 15:44:38 | 显示全部楼层 |阅读模式
本帖最后由 egoistaw 于 2024-11-7 15:47 编辑

C库提供的快速排序函数qsort()内部是用递归实现的,数组越长占用越大。
Keil生成的htm文件,即Static Call Graph for image xxx里提示的qsort占用为
qs1.png
最上层任务entry的占用提示为
qs2.png
可以看到上层忽略了qsort In Cycle这条线,
导致自己在查找堆栈溢出的原因时被误导了。

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-11-7 15:54:55 | 显示全部楼层
谢谢分享。

这个htm统计不了函数嵌套,中断和中断嵌套。
回复

使用道具 举报

3

主题

432

回帖

441

积分

高级会员

积分
441
发表于 2024-11-7 18:20:32 | 显示全部楼层
递归级数是运行时才能获得信息,编译器不会给你答案。
回复

使用道具 举报

12

主题

147

回帖

183

积分

初级会员

积分
183
发表于 2024-11-8 10:57:53 | 显示全部楼层
不过这个qsort的确是个坑,最好别用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 06:08 , Processed in 0.044692 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表