TC官方合作论坛

标题: 【类人猿TC内存探讨】 第七讲:数组内存分析 [打印本页]

作者: 类人猿    时间: 2017-8-25 13:12
标题: 【类人猿TC内存探讨】 第七讲:数组内存分析
本帖最后由 类人猿 于 2017-8-28 14:14 编辑
<<<<<<<<技术探讨,欢迎大神指导!<<<<技术Q:578052137 技术群:128262077

关于TC数组内存官方并没有详细的分析数组指针。因为TC里面数组不是真正的数组而应该是个数据结构,说到这里可能同学们又晕了。
首先我们先看下TC数组的构成,下面以整数作为例子。


   var Array = array(1,2,3,4)
   这里数组的每一个元素都是整数型,TC里面每个元素整数默认是4个字节。
   Array[0]=1
   Array[1]=2
   Array[2]=3
   Array[3]=4
比如Array[0]的地址是0x28588F0,那么Array[1]的指针就是+4后的0x28588F4,其他的以此类推。
这个是程序的逻辑,但是在TC里面是否这样呢?我们直接看下面代码:


function 按钮0_点击()
    var Array  = array(1,2,3,4)
    var Addr1=varaddress(Array[0])
    Addr1=strformat("%x",Addr1)
    traceprint(Addr1)
   
    var Addr2=varaddress(Array[1])
    Addr2=strformat("%x",Addr2)
    traceprint(Addr2)  
end

[attach]25401[/attach]

我们发现Array[0]和Array[1]他们不是相差0x4,而是相差0x1E0,为什么呢?应为在TC里面一个整数变量也是个结构来的,这个是TC工程师设定的我们也不要去追究了


问题来了,那我们在分析程序或者游戏的时候应该怎么办呢?
PC端的程序一般都是用C语言进行编写,数组内存地址Array[0]和Array[1]内存地址肯定是相差4的。但是变量类型很多,具体情况还得具体分析的


这里就是给大家一个提醒,希望能起到抛钻引钰的作用。想用TC玩内存就要先了解TC自身内存形式。



作者: 2576605471    时间: 2017-8-25 14:22
已看,点赞...
作者: OOOO    时间: 2017-8-25 14:37
希望能直接来点干货
作者: 剑仙十号    时间: 2017-8-27 18:34
学习。这是一个好贴。




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1