精易论坛

标题: R内存交互_Dll插件神器 [打印本页]

作者: r11111    时间: 2019-3-2 20:04
标题: R内存交互_Dll插件神器
本帖最后由 r11111 于 2019-3-3 08:36 编辑

内部含有最简单的例子
注:本模块使用需要尽量学习或了解过内存操作。
否则容易导致主程序崩溃
RtlCopyMemory函数由于Win7不支持
所以本模块暂时没有支持

DLL

这里的【R_到类型后释放内存R_取指针地址(按钮),8
可有可无【因为这个过程结束后会自动释放】
Main程序中

效果>>>


以后再也不担心DLL和主程序之间数据传递受限制了

目前经过测试:
本模块处于DLLMain之间传递没有问题
就连自定义数据类型 (结构体)也可以直接传递【要确保两边结构一致】
本模块写的DLL可以静态编译后被使用。
合理释放的也可以普通编译后被使用。【就怕有乱写的】
>>>测试方法就是看你的DLL在普通编译下被调用后会不会导致程序崩溃
>>>如果崩溃基本上就只能用静态编译编译DLL了
>>>如果没崩溃证明你写的比较合理,可以用普通编译编译DLL了
功能强大,采用【汇编代码+Windows API 实现】
R内存交互_Dll插件神器.zip (10.85 KB, 下载次数: 116)
QQ交流群:659077591




作者: 汉族    时间: 2019-3-2 20:53
支持  看着很吊
作者: r11111    时间: 2019-3-2 20:59
汉族 发表于 2019-3-2 20:53
支持  看着很吊

谢谢支持!
作者: 绿色的可达鸭    时间: 2019-3-2 21:51
你确定你懂内存吗?这种东西直接拷贝内存完事了 哪有这么麻烦?还有只是指针操作而已会至于蓝屏吗?一个应用程序指针操作不谨慎都能导致蓝屏那还得了?
作者: r11111    时间: 2019-3-3 08:23
1048644892 发表于 2019-3-2 21:51
你确定你懂内存吗?这种东西直接拷贝内存完事了 哪有这么麻烦?还有只是指针操作而已会至于蓝屏吗?一个应 ...

经过测试纯粹的内存拷贝是容易导致内存泄漏的。静态编译的DLL可能没事,但普通编译的会因为内存泄漏导致主程序崩溃。所以才加上释放内存的命令。经过测试释放现有对象数据和原对象数据后不会影响界面上的对象。所以就主动释放了。蓝屏问题是在 CSDN-专业IT技术社区 看到的,本人并没有遇到过。
作者: futiem    时间: 2019-3-3 11:50
功能强大功能强大
作者: r11111    时间: 2019-3-3 11:56
futiem 发表于 2019-3-3 11:50
功能强大功能强大

感谢您的认可
作者: chencong5025    时间: 2019-3-3 18:02
本帖最后由 chencong5025 于 2019-3-3 18:04 编辑

cache.dll  静态编译后 调用出错
普通编译 调用正常

补充:
Main.exe 主程序也必须普通编译。

作者: 绿色的可达鸭    时间: 2019-3-3 18:24
r11111 发表于 2019-3-3 08:23
经过测试纯粹的内存拷贝是容易导致内存泄漏的。静态编译的DLL可能没事,但普通编译的会因为内存泄漏导致 ...

相同的数据结构拷贝内存怎么可能导致内存泄漏?这不是扯淡吗?还有子程序执行完毕后会自动回收的,你还手动释放不是多此一举?
作者: 绿色的可达鸭    时间: 2019-3-3 19:13
本帖最后由 1048644892 于 2019-3-3 19:27 编辑

你就编译看看,各种方式编译 崩了算我输好吧?

QQ截图20190303185345.bmp (625.07 KB, 下载次数: 1)

QQ截图20190303185345.bmp

作者: r11111    时间: 2019-3-4 12:24
1048644892 发表于 2019-3-3 19:13
你就编译看看,各种方式编译 崩了算我输好吧?


本模块主要是用于Main和DLL之间,你只在Main中当然没什么大问题了

作者: r11111    时间: 2019-3-4 12:48
1048644892 发表于 2019-3-3 18:24
相同的数据结构拷贝内存怎么可能导致内存泄漏?这不是扯淡吗?还有子程序执行完毕后会自动回收的,你还手 ...

声明 控件是DLL中的,调用的原来的。释放是为了安全。不这样举例子如果有些人用全局变量后还不释放就会有隐患。
作者: chencong5025    时间: 2019-3-6 12:46
r11111 发表于 2019-3-4 12:24
本模块主要是用于Main和DLL之间,你只在Main中当然没什么大问题了

你回复错了吧。我说的是不能静态编译。 他说的是 内存拷贝。。。
作者: r11111    时间: 2019-3-6 13:09
chencong5025 发表于 2019-3-6 12:46
你回复错了吧。我说的是不能静态编译。 他说的是 内存拷贝。。。

举个例子,表达的是 内存拷贝 也会有隐患,证明他说的“各种方式编译,崩了算我输”是错的。
而且你用模块后编译,模块内部其实也差不多就是 内存拷贝,和一些其它操作。

作者: chencong5025    时间: 2019-3-6 23:52
r11111 发表于 2019-3-6 13:09
举个例子,表达的是 内存拷贝 也会有隐患,证明他说的“各种方式编译,崩了算我输”是错的。
而且你用模 ...

我说你回复错了。。。我说的是 不能静态编译 我哪里说过 内存拷贝了?
作者: r11111    时间: 2019-3-9 14:19
chencong5025 发表于 2019-3-6 23:52
我说你回复错了。。。我说的是 不能静态编译 我哪里说过 内存拷贝了?

因为我的模块里用的就是 内存拷贝,所以你说不能静态也就是和 内存拷贝 有关的
作者: liyayun    时间: 2019-3-10 02:05
DLL   注入  可以卸载吗?  线程注入
作者: r11111    时间: 2019-3-12 12:38
liyayun 发表于 2019-3-10 02:05
DLL   注入  可以卸载吗?  线程注入

有些注入会没问题,卸载会导致程序崩溃。线程注入没有测试过
作者: chencong5025    时间: 2019-3-16 21:27
r11111 发表于 2019-3-9 14:19
因为我的模块里用的就是 内存拷贝,所以你说不能静态也就是和 内存拷贝 有关的

那还是没回答我的问题。。。
不能静态啊。
作者: r11111    时间: 2019-3-17 08:45
liyayun 发表于 2019-3-10 02:05
DLL   注入  可以卸载吗?  线程注入

使用得当是可以卸载的
作者: r11111    时间: 2019-3-17 08:47
chencong5025 发表于 2019-3-16 21:27
那还是没回答我的问题。。。
不能静态啊。

操作得当是可以静态的,我测试过了。我的Relative-RZJ V2.0.0.5中Python语言库就是静态编译的DLL。调用和卸载都不成问题。
作者: 绿色的可达鸭    时间: 2019-3-18 05:04
本帖最后由 1048644892 于 2019-3-18 08:10 编辑
r11111 发表于 2019-3-6 13:09
举个例子,表达的是 内存拷贝 也会有隐患,证明他说的“各种方式编译,崩了算我输”是错的。
而且你用模 ...

内存拷贝的本质和易语言中的“写到内存”又或者说"赋值(=)"是没有任何区别的知道吗?
说内存拷贝有隐患的话就是说出来你确定不是让大家笑的?
所以到底为什么你使用内存拷贝就崩了?那是你自己写的代码问题跟函数本身有什么关系?更离谱的是跟编译方式有什么关系?
跟DLL交互和主体本身函数的交互"本质“上有什么区别?我就想问问你?
难道你用易语言写的一些函数封装成模块会和写在源码中就不一样吗?
你只是传递一个对象的指针写到新的变量中去被继承了而已,这么简单的东西用内存拷贝为什么崩了?
程序的崩溃只有2个原因 1.数据溢出 2.读写无效指针 所以说跟内存拷贝有什么吊关系?跟编译方式有什么吊关系?还有你只是取指针而已,这个指针不是你申请的,你还把他给释放了?这不是增加了崩溃的风险?
最后就是你的那个释放完完全全的多余是一个没有任何意义的指令知道吗?按照你写的如果指针真被你释放了你程序早崩了


作者: 绿色的可达鸭    时间: 2019-3-18 05:13
本帖最后由 1048644892 于 2019-3-18 08:09 编辑

别回我,你觉得你对就对!

QQ截图20190318051144.png (11.02 KB, 下载次数: 4)

QQ截图20190318051144.png

作者: r11111    时间: 2019-3-18 10:03
1048644892 发表于 2019-3-18 05:04
内存拷贝的本质和易语言中的“写到内存”又或者说"赋值(=)"是没有任何区别的知道吗?
说内存拷贝有隐患 ...

我知道内存拷贝和赋值没有区别,但是在拷贝对象到DLL的全局变量中确实也会导致崩溃。这完全没有问题,我让他们释放应该也没有问题吧。
作者: r11111    时间: 2019-3-18 10:05
1048644892 发表于 2019-3-18 05:13
别回我,你觉得你对就对!

我早说过了,是在DLL和Main之间使用。而不是只在主程序中使用,在DLL中要是对象处于全局,而不释放是会导致崩溃的(静态编译)下。
作者: chencong5025    时间: 2019-3-19 23:02
r11111 发表于 2019-3-17 08:47
操作得当是可以静态的,我测试过了。我的Relative-RZJ V2.0.0.5中Python语言库就是静态编译的DLL。调用和 ...

什么叫操作得当?
作者: vioer    时间: 2019-3-19 23:22
神仙打架看不懂,俺只是路过....以后能看懂了再说话...凡是技术交流俺都支持...
作者: r11111    时间: 2019-3-22 18:05
chencong5025 发表于 2019-3-19 23:02
什么叫操作得当?

就是对内存中变量的操作,我的Python-CMD.DLL在修改部分变量操作方式后,已经可以实现 静态编译 被Main调用而不崩溃
作者: r11111    时间: 2019-3-22 18:06
vioer 发表于 2019-3-19 23:22
神仙打架看不懂,俺只是路过....以后能看懂了再说话...凡是技术交流俺都支持...

66666666我只是一个菜鸡,不是神仙。毕竟我才高二,能力有限
作者: xiaoniu1230    时间: 2019-3-24 18:27
谢谢大神分享,很不错
作者: r11111    时间: 2019-3-29 17:27
xiaoniu1230 发表于 2019-3-24 18:27
谢谢大神分享,很不错

不用谢,喜欢就好
作者: 三九敌敌畏    时间: 2019-5-1 16:24
谢谢分享。。。
作者: wangjunjun    时间: 2019-5-25 18:46
谢谢分享 学习了
作者: dyx128    时间: 2019-7-1 20:51
谢谢分享。。。
作者: boxxie    时间: 2019-12-9 10:02

多谢楼主分享哟
作者: ujff77    时间: 2019-12-9 10:25
谢谢分享。。。
作者: scgs3178    时间: 2019-12-18 16:06
好东西,谢谢分享




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4