tem*_*def 6 c pointers memory-address conways-game-of-life
昨天我可以通过这个混淆的C代码实现Conway的生命游戏.作为伪随机生成器,它将代码写入此效果:
int pseudoRand = (int) &pseudoRand;
Run Code Online (Sandbox Code Playgroud)
根据作者对该计划的评论:
这是一个很大的数字,每次运行应该是不同的,所以它作为种子很好地工作.
我相信这里的行为是实现定义的还是未定义的.但是,我不确定为什么这个值会随着运行而变化.我对大多数操作系统工作的理解是,由于虚拟内存,每次运行程序时堆栈都被初始化为相同的虚拟地址,因此每次地址应该相同.
在大多数操作系统上,此代码是否会在不同的运行中产生不同的结果 它是依赖于操作系统的吗?如果是这样,为什么操作系统会在每次运行时将相同的程序映射到不同的虚拟地址?
谢谢!