在 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 (将#修改为@)