我正在学习C编译器中的8位6502编程(www.cc65.org)
NES FC具有8位6502处理器和2K RAM.但是,以下C编译(到nes文件中)并在VirtualNES模拟器中成功加载.
#include "conio.h"
#include "stdlib.h"
int dump[1000];
void main()
{
int *a;
a = (int*)malloc(19222999);
cputs("Hello, World!");
a[0] = 1;
for(;;); // loop forever, never ends
}
Run Code Online (Sandbox Code Playgroud)
为什么这样可以?显然我在上面的C代码中分配了比2K更多的内存.
Segfaults是现代时代奇妙而神奇的恩赐; 他们代表我们的计算机自我诊断他们自己的错误,时刻刻刻.
相比之下,相比之下,计算机"崩溃"的方式很少,因为计算机会意识到某些事情出了问题,导致它做了别的事情.在这里,你已经在内存中写了一个1(很可能覆盖了一些重要的东西!),然后计算机继续运行.
内容:在旧架构和嵌入式系统中,"不崩溃"是一个非常低的清除条,并不表示事情是正常的.