最近有人指出我的一个 C 程序,如果内存块的起始地址足够低,我的一个测试将由于绕零而失败,从而导致崩溃。
起初我以为“这是一个令人讨厌的潜在错误”,但后来,我想知道:这种情况会发生吗?我从来没有见过。公平地说,这个程序已经在无数系统上运行了数百万次,而且迄今为止从未发生过。
malloc()
因此,我的问题是:调用可能返回的最低内存地址是多少?据我所知,我从未见过像 0x00000032 这样的地址。
我只对“现代”环境感兴趣,例如 Linux、BSD 和 Windows。此代码不打算在 C64 或任何爱好/研究操作系统上运行。