保存一下研究易语言数据结构在内存中是怎么储存的
1:易语言只认识一种数据类型,就是整数型,全部数据类型都按4字节对齐(这可能是为了能实现文本数据类型,和字节集数据类型,和数组类型吧)
2:windows中的c语言,汇编语言(masm)等,全部都是按1个字节对齐的,(整数型的类型一定程度上只不过是4个字节而已)
3:基于上面2点,可以看出,易语言的数据结构是和windows"不兼容"的;
如果易语言要和windows打交道,要给动态链接库函数传递数据结构,那么必须进行
转换,所以~易语言在给dll传递数据结构时全部都透明化了转换
4:基于以上3点,易语言也就不支持直接操作windows的数据结构了(间接自己计算偏移来操作还是可以的)
5:所以写驱动,如果要操作windows数据结构的话,@_memcpy 就是神器啊~,调用这个函数来欺骗易语言,
达到windows数据结构指针转换成易语言结构
___________________________________
易语言存储数据结构
字节型 占用 4个字节,里面保存真实数据 (c语言,汇编语言占用1个字节)
短整数型 占用 4个字节,里面保存真实数据 (c语言,汇编语言占用2个字节)
整数型 占用 4个字节,里面保存真实数据 (c语言,汇编语言占用4个字节)
字节型数组,短整数型数组,整数型数组 (通通申请内存)占用 4个字节,里面保存数据指针(数组的话,是有另外一套结构的~) (c语言,汇编语言没有的~,易语言牛B,够易~)
字节集 (占用 4个字节)直接填入申请到的内存的指针,指针指向字节集~ (c语言,汇编语言没有的~,易语言牛B,够易~)
文本 (占用 4个字节)占用4个字节,还是保存指针,指针指向文本~ (c语言,汇编语言有也是指针,易语言牛B,够易~)
嵌套其他结构 (占用 4个字节)占用4个字节,还是保存指针,指针这个结构 (c语言,汇编语言直接在当前数据结构位置插入这个结构)
ps,目前没发现"传址"这个属性有什么用,只知道,勾了传址时,给api传递这个结构,铁定崩溃(读不存在的地址) |