【发布时间】:2023-03-22 20:26:01
【问题描述】:
我知道您可以读取超出数组末尾的内容 - 我现在想知道您是否可以通过执行该读取操作来进行 seg-fault。
int someints[100];
std::cerr << someints[100] << std::endl; //This is 1 past the end of the array.
第二行真的会导致段错误还是只会打印乱码?另外,如果我更改了该内存,是否会导致在该特定行上出现段错误,或者仅当其他东西试图使用意外更改的内存时才会发生错误?
【问题讨论】:
-
它更有可能打印乱码而不是核心转储,但行为是未定义的,它可以简单地重新格式化整个磁盘(并且没有理由抱怨 - 你调用了未定义的行为)。不要尝试。绝对不要依赖轻度虐待;你不知道哪个变量被写入了。