当前位置: 首页 > java >正文

栈溢出问题

brpc 的 bthread 默认协程栈大小是 128KB(非 pthread 模式)。

如果在一个bthread中,它执行的函数内定义了一个局部变量map,有很多个元素,map的大小超过了128KB,协程会自动申请新的栈空间吗?

这里要分清:

  1. map 对象本身(红黑树头、size等)
    在栈上,只有几十字节。

  2. map 的节点(_Rb_tree_node
    每次 insert 时都会 new 一个节点,节点在 堆上分配(通过 new → tcmalloc)。
    所以,即使有很多个元素,占用的内存大部分都在 ,不是栈。

什么时候会真的栈溢出?

  • 大局部数组 / 大结构体

    char buf[200 * 1024]; // 200KB,直接溢出 128KB 栈
  • 深递归
    递归层数太多,函数调用栈帧累加超过 128KB。

  • 函数调用链里很多大局部变量 叠加使用。

另外,协程栈不会自动扩展,如果函数局部变量太大(几百 KB 以上),就会直接 segfault。

http://www.xdnf.cn/news/19325.html

相关文章:

  • 498. 对角线遍历
  • 银河麒麟系统无法打开360浏览器的解决办法以及安装initramfs-tools报错解决方案
  • 10.2 工程学中的矩阵
  • AutoDriveRelated-WA
  • Qt中的锁(1)
  • 【lua】table基础操作
  • String str = new String(“abc“)
  • C语言---零碎语法知识补充(队列、函数指针、左移右移、任务标识符)
  • 第十六章 ESP32S3 WATCH_DOG 实验
  • C++优先级队列priority_queue的模拟实现
  • 论文介绍:《Small Language Models are the Future of Agentic AI》
  • Python(五)Python_C API详细
  • Linux三剑客grep-sed-awk
  • 为什么vue3会移除过滤器filter
  • 北斗导航 | RAIM算法改进方案及性能对比分析报告
  • 深度学习:洞察发展趋势,展望未来蓝图
  • 计算机网络面试集合
  • 【AI工具】在 VSCode中安装使用Excalidraw
  • Java全栈开发面试实战:从基础到微服务的深度解析
  • 小迪安全v2023学习笔记(七十四讲)—— 验证机制篇验证码绕过思路SRC挖掘演示
  • Coze源码分析-API授权-获取令牌列表-前端源码
  • LeetCode刷题记录----51.N皇后(Hard)
  • OpenCV安装及其开发环境配置(Windows系统Visual Studio 2022)
  • ros1ros2区别和相同之处
  • 软考 系统架构设计师系列知识点之杂项集萃(136)
  • 【LeetCode - 每日1题】有效的数独
  • Java基础知识(十)
  • plantsimulation知识点 多条RGV驮一台工件图标显示顺序问题
  • C语言类型转换踩坑解决过程
  • 重叠IO模型