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]他们不是相差
0x
4
,而是相差
0x
1E0
,为什么呢?应为在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