我有一个简单的程序,如:
#include <stdio.h>
int main(void){
*(int*) 1 = 1;
return 0;
}
但是为什么它会给我分段错误?
答案 0 :(得分:1)
这很可能不会导致大多数系统崩溃。作业
*(int*)1 = 1;
尝试使用地址1为内存中的位置分配1.这是非常未定义的行为,并且在大多数系统中,内存保护机制在您尝试时会引发错误。
答案 1 :(得分:1)
您的代码尝试写入地址为0x01的内存。
当程序试图访问不允许访问的内存位置时,会发生分段错误。