【far 语言】原生内存与 FFI
本文是「far 语言」系列文档之一,总目录见《【far 语言】语言文档目录》。
原生内存:bytes + load/store
bytes是 far 表达"连续原生内存"的唯一方式(独立堆外分配,地址稳定)。类型化读写走编译期bytesLoad<T>/bytesStore<T>。
分配与基础操作
buf := bytes(64); // 分配 64 字节连续内存,零初始化
println(bytesLen(buf)); // 64
bytesSet(buf, 0, 0x41); // 写单字节('A')
b := bytesGet(buf, 0); // 65
s := bytesToStr(buf); // 转字符串(到首个 \0)
bin := bytesFromStr("AB"); // 字符串 → 字节缓冲
p := bytesPtr(buf); // 稳定数据指针(传给 C 用)
类型化读写:load / store
// 语法:bytesLoad<T>(bytes, 偏移) / bytesStore<T>(bytes, 偏移, 值)
bytesStore<i32>(buf, 0, 42);
x := bytesLoad<i32>(buf, 0); // 42
bytesStore<u16>(buf, 4, 300);
y := bytesLoad<u16>(buf, 4); // 300
// 符号 / 零扩展
bytesStore<i8>(buf, 8, -1);
neg := bytesLoad<i8>(buf, 8); // -1
u := bytesLoad<u8>(buf, 8); // 255
// 64 位 / double
bytesStore<long>(buf, 16, 5000000000);
l := bytesLoad<long>(buf, 16); // 5000000000
bytesStore<double>(buf, 24, 3.14);
d := bytesLoad<double>(buf, 24); // 3.14
// 指针
bytesStore<ptr>(buf, 32, address);
p2 := bytesLoad<ptr>(buf, 32);
- 类型实参:
i8/u8/i16/u16/i32/u32/i64/u64/bool/ptr/usize、far 业务类型byte/short/int/long、double。 - 布局 / 宽度 / 对齐编译期算好,运行时零布局信息。
- 有符号类型 load 符号扩展,无符号零扩展。
GC 与大块内存
- 数据区堆外分配(
u.bytes.data独立 malloc),GC 只扫 40B 对象头,成本 O(1)。 - GC 不移动对象,地址稳定,无大块拷贝停顿。
bytes活 → 数据活;bytes回收 → 数据释放,无泄漏。
Rust编程语言群 1036955113
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号