TC官方合作论坛

 找回密码
 立即注册
查看: 1692|回复: 3

[学习心得] 【类人猿TC内存探讨】 第七讲:数组内存分析

[复制链接]
发表于 2017-8-25 13:12:31 | 显示全部楼层 |阅读模式
本帖最后由 类人猿 于 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



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


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


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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 2威望 +20 金币 +20 收起 理由
轩辕迟雪 + 10 + 10 赞一个!
言术 + 10 + 10 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2017-8-25 14:22:12 | 显示全部楼层
已看,点赞...
回复

使用道具 举报

发表于 2017-8-25 14:37:18 | 显示全部楼层
希望能直接来点干货
回复 支持 反对

使用道具 举报

发表于 2017-8-27 18:34:35 来自手机 | 显示全部楼层
学习。这是一个好贴。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-18 08:28 , Processed in 0.037213 second(s), 25 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表