【发布时间】:2019-03-13 01:20:54
【问题描述】:
谁能帮助解释为什么运行执行文件(使用 Dev-C++ 5.6.3 从以下 C 程序构建)会导致崩溃? Pradip Dey 和 Ghosh Manas 2013 Computer basics and programming in C 中有一些解释说“位置 1000 可能包含该程序。由于它是只读的,因此操作系统将引发分段错误。*pi = 5 怎么样? 同样,它很可能会导致分段错误,因为较低的内存地址通常用于程序代码。这个区域是只读的。应该提前知道这个常量在内存中的位置。"
但是,对我来说,这些解释很难理解
int main()
{
int *ip;
ip = (int*)1000;
*ip = 5;
}
【问题讨论】:
-
当您写入某个任意选择的内存位置时,您希望程序执行什么操作?
-
你希望程序做什么?
-
大概是这样运行的:...
ip = (int*)1000; *ip = 5; (SegFault) -
它正在崩溃,因为您正在访问您不应该访问的内存。