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