微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 macOS 中分配 32 位地址

如何解决在 macOS 中分配 32 位地址

在 linux x86_64 上,为了仅使用 32 位指针设置地址空间,我使用函数(在 Rust 中):

function getPricePromise() {
  return new Promise((resolve,reject) => {
    $.getJSON("https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd",function(data){
      resolve(data["bitcoin"]["usd"]);
    }).fail(function(_,textStatus,error ) {
      reject(error);
    });
  }
}

async function btcPriceLogger() {
  var btcPrice = 63000;

  try {
    btcPrice = await getPricePromise();
  } catch (err) {
    alert(err);
  }

  console.log(btcPrice);
}

btcPriceLogger()

或者将 32 位值作为第一个参数传递给 let big_heap = libc::mmap(std::ptr_null_mut() as *mut libc::c_void,MAX_HEAP_SIZE,libc::PROT_READ | libc::PROT_WRITE,libc::MAP_PRIVATE | libc::MAP_32BIT | libc::MAP_ANONYMOUS,-1,0); 并使用 mmap

macOS 上似乎没有 libc::MAP_FIXED。我尝试将第一个参数设置为某个常量并使用 libc::MAP_32BIT,有时它可以工作,有时它会因无法创建内存而崩溃。

有什么方法可以安全地保留一个地址空间,并且该地址空间位于 macOS 上的 32 位中?我考虑分配一个 64 位值,并使用该值的 32 位偏移量,但它产生了无法接受的运行时开销,必须到处传递基指针。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。