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

栈溢出问题

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.dtcms.com/a/358750.html

相关文章:

  • Redis-数据类型的常用操作命令
  • uart学习
  • Jdk动态代理 Cglib动态代理
  • MYSQL表结构优化场景
  • 解构机器学习:如何从零开始设计一个学习系统?
  • folium地图不显示加载不出来空白问题解决
  • SAP PP模块的MPS
  • 福彩双色球第2025100期篮球号码分析
  • git在push和clone等操作时显示‘: Invalid argument
  • 优选算法:二分查找
  • #5:Nginx核心使用技术
  • Java 学习笔记(基础篇12)
  • 小狼毫输入法中让数字键盘上的数字键不再选择候选词而是与原始输入一起直接上屏
  • 计算机视觉与深度学习 | 基于深度学习的图像特征提取与匹配算法综述及MATLAB实现
  • 互联网大厂大模型应用开发岗位面试:技术点详解与业务场景演练
  • nacos3端口漂移问题
  • shell编程-核心变量知识
  • LeetCode - 234. 回文链表
  • 2025年高性能计算年会
  • Golang 面试题「高级」
  • 零碳智慧园区双碳方案
  • 代理IP网站哪家好?全球优质IP代理服务商有什么推荐?
  • 【Linux】网络安全管理:Netfilter、nftables 与 Firewalld | Redhat
  • Linux查看Java进程PID、端口号和内存占用脚本
  • 2023年山东省信息学小学组(CSP-X)第一轮题解
  • 【嵌入式原理系列-第六篇】从Flash到RAM:MCU ld脚本全解析
  • SUMO 与 孪易 IOC 协同:开启交通数字孪生新纪元
  • 哪些人需要考道路运输安全员证?政策要求与适用范围
  • 计算机网络面试集合
  • 通过jar -jar启动jar包的yml配置logback 指定log目录