Squirrel 文档翻译( Squirrel嵌入-初始化)

内存管理

Squirrel使用引用计数作为内存管理中主要系统。然而Squirrel虚拟机使用一个辅助标识和垃圾收集器,该收集器可以被想强行调用。

两种可能的编译期操作:

  • 默认的设置是引用计数外加辅助标识和一个垃圾收集器。宿主程序在程序执行期间可以调用函数sq_collectgarbage()函数完成垃圾回收。Squirrel虚拟机不会主动调用垃圾收集器,需要宿主程序显式的调用。
  • 第二种情况是只有一个引用计数器(定义在NO_GARBAGE_COLLECTOR),这中情况下,虚拟机不会检测引用链,所以需要开发人员显式的解决引用的问题以防止内存泄露。

第二种情况唯一的优点就是可以节省两个额外的指针,为每一个对象在默认的配置表中存放该指针以供垃圾收集器使用(32位系统存放8位的指针)。相关的类型有表,数组,函数,线程,userdata以及生成器。其他类型则被忽略。这些选项不会影响执行速度。

 

Unicode

默认情况下,Squirrel字符串这是纯粹的8为ASCII字符。但是如果在虚拟机中定义了宏“SQUNICODE”,编译器和API将使用16位字符。


64位机上使用Squirrel脚本

在C++预编译器上通过定义'_SQ64'宏,可以在64位机上编译Squirrel脚本。这个宏可以在包含了“squirrel.h”文件的任何工程里定义。

 

Squirrel中使用双精度浮点型

在C++预编译器上通过定义“SQUSEDOUBLE”使得Squirrel支持双精度。这个宏可以在任何一个包含了“squirrel.h”的工程中定义。如果在32位机上定义该宏,虚拟机会增加大量的内存。

 

错误约定

大多Squirrel函数返回SQRESULT,SQRESULT表示该函数是否成功执行。宏 SQ_SUCCEEDED() 和SQ_FAILED()负责测试函数的返回值。

 

if(SQ_FAILED(sq_getstring(v,-1,&s)))
printf("getstring failed");

 

初始化Squirrel

宿主程序首先必须做的事是创建一个虚拟机。宿主程序可以通过函数sq_open()创建任意多个虚拟机。

如果虚拟机不在需要,每一个单独的虚拟机都需要调用sq_close()释放。

 

int main(int argc, char* argv[])
{
HSQUIRRELVM v;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丑娃儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值