gpt4 book ai didi

c++ - 指针是否保证 > 某个值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:18 27 4
gpt4 key购买 nike

在 C++ 中,当我执行 new(甚至 malloc)时,是否可以保证返回地址将大于某个值?因为...在这个项目中,我发现使用 0-1k 作为枚举非常有用。但如果有可能获得那么低的值(value),我不想那样做。我唯一的目标系统是带有 OS window/linux 和 mac 的 32 位或 64 位 CPU。

标准是否对指针有任何说明? Windows 或 Linux 是否说明了它们的 C 运行时以及最低内存地址(对于 ram)是什么?

-edit- 我最终修改了我的 new 重载以检查地址是否大于 1k。如果没有,我会调用 std::terminate。

最佳答案

就标准而言,没有什么。但实际上,它取决于目标操作系统,例如 windows 将前 64kb 内存保留为无人区(取决于构建它是只读内存,否则它被标记为 PAGE_NOACCESS),而它使用上层 0x80000000+ 用于内核内存,但可以更改,参见 this & this在 MSDN 上。

在 x64 上你也可以使用地址的高位(目前只有 47 位用于地址),但这不是一个好主意,因为稍后它会改变并且你的程序会崩溃(AMD 制定了标准也反对它)。

关于c++ - 指针是否保证 > 某个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9249619/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com