为什么malloc()返回高位地址?

时间:2018-09-14 05:04:54

标签: c++ macos

我有一个源文件:

#include <cstdlib>
#include <iostream>

int main() {
    void *p = std::malloc(8192);
    std::cout << std::hex << (size_t)p << std::endl;
    std::free(p);
}

我在两个平台上对其进行了编译:(a)在MacOS上使用clang ++ 4.2.1,以及(b)在Linux上使用g ++ 7.3.0。

在macOS上,打印输出为7fa432001000,在Linux上为257ec20

不期望macOS的打印输出。我认为malloc()应该在堆中分配内存,如果它在后台使用mmap()分配内存,那也很好。但是7fa432001000 似乎在堆栈位置中的地址,因为x86_64上虚拟内存的上限刚好低于7fffffffffff(至少在当前的Linux中是这种情况-也许我是错误的。)

我的问题是:为什么macOS上的malloc()返回这么高的地址?这是因为实现了Clang的libc ++的方式吗?

0 个答案:

没有答案