gpt4 book ai didi

c++ - 堆栈内存错误创建核心文件?

转载 作者:行者123 更新时间:2023-11-28 03:28:02 25 4
gpt4 key购买 nike

我从没见过这个,但我脑子里有这个东西!

此处的堆栈内存错误也可能是内存损坏。假设 c/c++ 程序中存在堆栈溢出。

它会创建核心转储文件吗?

最佳答案

这取决于操作系统和语言运行时。我假设您在谈论 Unix/Linux 的某种风格,因为您提到了核心转储。

通常,在堆栈之外会有一些未映射的虚拟内存(可能是单页)。如果溢出小于该数量,则程序将尝试访问它,并给出段错误。如果程序不处理信号,那么它将中止;如果启用了核心转储,则会生成一个。您可能需要启用核心转储,可能需要从用于启动程序的 shell 中使用 ulimit -c unlimited

如果大量溢出,那么您可能会改写程序内存的其他部分。如果发生这种情况,那么所有赌注都将取消;该程序可能会崩溃,或者可能会继续处于损坏状态并在未来的任何时候造成任何类型的损坏。

假设“溢出”是指使用的堆栈内存多于深度调用堆栈和大型自动对象的某种组合所分配的内存。如果您正在谈论写入堆栈的错误部分(例如,通过越界访问自动数组),那么您通常会遇到随机内存损坏而不是段错误;同样,该程序可能会在损坏的状态下摇摇欲坠,并产生不可预测的结果。

关于c++ - 堆栈内存错误创建核心文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13412451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com