gpt4 book ai didi

c++ - 什么时候保证段错误?

转载 作者:搜寻专家 更新时间:2023-10-31 00:08:32 27 4
gpt4 key购买 nike

我正在学习 C++,我了解到段错误可能会因未定义的行为而发生。但是,是否存在保证会发生段错误的情况?或者它总是未定义的行为?

最佳答案

当您尝试读取或写入您无权访问的内存时,在具有内存保护的操作系统中会发生段错误 - 特殊值,如 nullptr,为操作系统保留的内存,或内存另一个过程。

因为段错误是由操作系统引发的,所以它们本质上是特定于平台的概念。在 Windows 上导致段错误的东西不一定会导致段错误,例如阿米加操作系统。 C++ 标准与平台无关,甚至没有提到段错误。

在具有内存保护的现代操作系统上,当您访问不属于您的内存时,您始终可以确定会出现段错误。取消引用 nullptr 肯定会导致它。访问一个随机地址可能不在您进程的地址空间内,因此这可能会导致段错误(因此访问未初始化的指针或悬空指针通常会导致段错误)。在缺乏内存保护的 AmigaOS 或经典 Mac OS 上,您不会因访问随机指针而出现段错误。相反,您可以覆盖操作系统或其他进程的内存(这可能是灾难性的)。

基本上,段错误是一个操作系统概念,而不是 C++ 概念,因此在 C++ 中您可以采取什么措施来引发段错误取决于您正在运行什么。

关于c++ - 什么时候保证段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48551162/

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