You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARM64 Macbook调用mmap出现Bad file descriptor错误如何解决?

修复ARM64 macOS上mmap匿名映射的Bad file descriptor错误

你的问题出在mmap调用的flags参数不完整,POSIX标准要求mmap必须指定MAP_PRIVATE或MAP_SHARED标志,macOS(包括ARM64架构的)严格执行这一规则,而你的调用只传了MAP_ANON,导致参数非法,触发Bad file descriptor错误。

修正后的代码

将flags参数补充MAP_PRIVATE(匿名映射通常用私有模式,不会与其他进程共享内存):

uint8_t *out = mmap(NULL, OUT_SIZE, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);

或者在macOS上也可以使用MAP_ANONYMOUS(是MAP_ANON的别名,效果完全一致):

uint8_t *out = mmap(NULL, OUT_SIZE, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);

额外提示

  • 调用mmap后一定要检查返回值是否为MAP_FAILED,结合perror可以更直观地排查错误:
    if (out == MAP_FAILED) {
        perror("mmap failed");
        exit(EXIT_FAILURE);
    }
    
  • 确保OUT_SIZE是正数,虽然macOS会自动将大小对齐到页面边界,但传入0会直接导致调用失败。

内容的提问来源于stack exchange,提问作者ishaangupte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:15:29