c - 数组和段错误

标签 c linux ubuntu

我正在创建以下数组:

int p[100];
int
main ()
{
    int i = 0;
    while (1)
    {
        p[i] = 148;
        i++;
    }
    return (0);
}

在写入数组的 1000 个位置(而不是 100 个)后,程序因段错误而中止。我知道 C 不会检查程序是否写入越界,这是留给操作系统的。我在ubuntu上运行它,堆栈的大小是8MB(限制-s)。为什么1000之后就中止了?如何检查我的操作系统为数组分配了多少内存? 抱歉,如果之前有人问过这个问题,我一直在谷歌上搜索这个问题,但似乎找不到具体的解释。

最佳答案

访问无效的内存位置会导致 Undefined Behavior这意味着任何事情都有可能发生。不一定会发生段错误。

关于c - 数组和段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29278505/

相关文章:

c - XFetchName 始终返回 0

linux - 命令面板中缺少 "Shell Command: Install"命令 - VS 代码 - ubuntu

linux - Ubuntu 总是丢失 resolv.conf 设置?

c - 执行标记化命令

C程序求斜边,发现斜边太大

Linux 命令行 - 按第一行字符计数的文件

linux - 递归检查 git 目录更新

c - Ubuntu 上的 Makefile 编译问题,-lhidapi-libusb 库

c - 从函数返回结构

c - 如何正确初始化指针