Valgrind 报告段溢出

新手上路,请多包涵

使用 valgrind / callgrind 运行我的程序时,我经常收到以下消息:

==21734== brk segment overflow in thread #1: can't grow to 0x4a39000 (地址不同)

请注意,它前面没有堆栈溢出消息。

我找不到有关此消息的任何文档,而且我不知道究竟是什么溢出。

任何人都可以帮我找出问题所在吗?这是 valgrind 的问题,还是我的程序的问题?

原文由 Tim Kuipers 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
1 个回答

valgrind 源代码 中的第 1327 行指向用户手册,“请参阅用户手册中的限制部分”:

限制部分第 1 项:

在 Linux 上,Valgrind 在启动时使用 RLIMIT_DATA rlim_cur 确定“brk 段”的大小,最小为 1 MB,最大为 8 MB。每次程序尝试将 brk 段扩展到超出启动时确定的大小时,Valgrind 都会输出一条消息。大多数程序都可以在这个限制下正常工作,通常是通过切换到使用 mmap 来获得更多内存。如果您的程序确实需要一个大的 brk 段,您必须更改 8 MB 硬编码限制并重新编译 Valgrind。

原文由 Piwi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题