信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 2066|回复: 9
打印 上一主题 下一主题

[『C++图文教程』] C++检验内存是否丢失还是很有一套的不信你来瞧瞧

[复制链接]

1868

主题

1878

帖子

1万

积分

积分
10928
跳转到指定楼层
宣传软件楼主
发表于 2017-6-21 23:20:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

软件教程首图:

软件教程分类:C++ 图文教程 

软件图文教程视频教程分类:软件图文教程 

软件教程难易程度:软件初级教程 

软件教程发布日期:2017-06-21

软件教程关键字:C++检验内存是否丢失还是很有一套的不信你来瞧瞧

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件定制网站 网址:http://www.postbbs.com

软件教程详细描述
这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。
工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来:
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件

C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件

先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存布局,如果写上/d1 reportSingleClassLayoutXXX(XXX为类名),则只会打出指定类XXX的内存布局。近期的VS版本都支持这样配置。
下面可以定义一个类,像下面这样:
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
1 class Base2 {3     int a;4     int b;5 public:6     void CommonFunction();7 }; C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件

然后编译一下,可以看到输出框里面有这样的排布:
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
这里不想花精力在内存对齐因素上,所以成员变量都设为int型。
从这里可以看到普通类的排布方式,成员变量依据声明的顺序进行排列(类内偏移为0开始),成员函数不占内存空间。

再看下继承,往后面添加如下代码:
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
1 class DerivedClass: public Base2 {3     int c;4 public:5     void DerivedCommonFunction();6 }; C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件

编译,然后看到如下的内存分布(父类的内存分布不变,这里只讨论子类成员变量的内存分布):
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
可以看到子类继承了父类的成员变量,在内存排布上,先是排布了父类的成员变量,接着排布子类的成员变量,同样,成员函数不占字节。

下面给基类加上虚函数,暂时注释掉DerivedClass,看一下这时的内存排布:
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
1 class Base2 {3     int a;4     int b;5 public:6     void CommonFunction();7     void virtual VirtualFunction();8 }; C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件

C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
这个内存结构图分成了两个部分,上面是内存分布,下面是虚表,我们逐个看。VS所带编译器是把虚表指针放在了内存的开始处(0地址偏移),然后再是成员变量;下面生成了虚表,紧跟在&Base1_meta后面的0表示,这张虚表对应的虚指针在内存中的分布,下面列出了虚函数,左侧的0是这个虚函数的序号,这里只有一个虚函数,所以只有一项,如果有多个虚函数,会有序号为1,为2的虚函数列出来。
编译器是在构造函数创建这个虚表指针以及虚表的。
那么编译器是如何利用虚表指针与虚表来实现多态的呢?是这样的,当创建一个含有虚函数的父类的对象时,编译器在对象构造时将虚表指针指向父类的虚函数;同样,当创建子类的对象时,编译器在构造函数里将虚表指针(子类只有一个虚表指针,它来自父类)指向子类的虚表(这个虚表里面的虚函数入口地址是子类的)。
所以,如果是调用Base *p = new Derived();生成的是子类的对象,在构造时,子类对象的虚指针指向的是子类的虚表,接着由Derived*到Base*的转换并没有改变虚表指针,所以这时候p->VirtualFunction,实际上是p->vfptr->VirtualFunction,它在构造的时候就已经指向了子类的VirtualFunction,所以调用的是子类的虚函数,这就是多态了。

下面加上子类,并在子类中添加虚函数,像下面这样:
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
1 class DerivedClass: public Base2 {3     int c;4 public:5     void DerivedCommonFunction();6     void virtual VirtualFunction();7 }; C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件

可以看到子类内存的排布如下:
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
上半部是内存分布,可以看到,虚表指针被继承了,且仍位于内存排布的起始处,下面是父类的成员变量a和b,最后是子类的成员变量c,注意虚表指针只有一个,子类并没有再生成虚表指针了;下半部的虚表情况与父类是一样的。

我们把子类换个代码,像这样:
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
1 class DerivedClass1 : public Base2 {3     int c;4 public:5     void DerivedCommonFunction();6     void virtual VirtualFunction2();7 }; C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件

注意到这时我们并没有覆写父类的虚方法,而是重声明了一个新的子类虚方法,内存分布如下:
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
还是只有一个虚表指针,但是下方虚表的内容变化了,虚表的0号是父类的VirtualFunction,而1号放的是子类的VirtualFunction2。也就是说,如果定义了DerivedClass的对象,那么在构造时,虚表指针就会指向这个虚表,以后如果调用的是VirtualFunction,那么会从父类中寻找对应的虚函数,如果调用的是VirtualFunction2,那么会从子类中寻找对应的虚函数。

我们再改造一下子类,像这样:
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
1 class DerivedClass1 : public Base2 {3     int c;4 public:5     void DerivedCommonFunction();6     void virtual VirtualFunction();7     void virtual VirtualFunction2();8 }; C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件

我们既覆写父类的虚函数,也有新添的虚函数,那么可以料想的到,是下面的这种内存分布:
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
下面来讨论多重继承,代码如下:
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
1 class Base 2 { 3     int a; 4     int b; 5 public: 6     void CommonFunction(); 7     void virtual VirtualFunction(); 8 }; 9 10 11 class DerivedClass1: public Base12 {13     int c;14 public:15     void DerivedCommonFunction();16     void virtual VirtualFunction();17 };18 19 class DerivedClass2 : public Base20 {21     int d;22 public:23     void DerivedCommonFunction();24     void virtual VirtualFunction();25 };26 27 class DerivedDerivedClass : public DerivedClass1, public DerivedClass228 {29     int e;30 public:31     void DerivedDerivedCommonFunction();32     void virtual VirtualFunction();33 }; C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件

内存分布从父类到子类,依次如下:
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
Base中有一个虚表指针,地址偏移为0
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件

DerivedClass1继承了Base,内存排布是先父类后子类。
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
DerivedClass2的情况是类似于DerivedClass1的。
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件

下面我们重点看看这个类DerivedDerivedClass,由外向内看,它并列地排布着继承而来的两个父类DerivedClass1与DerivedClass2,还有自身的成员变量e。DerivedClass1包含了它的成员变量c,以及Base,Base有一个0地址偏移的虚表指针,然后是成员变量a和b;DerivedClass2的内存排布类似于DerivedClass1,注意到DerivedClass2里面竟然也有一份Base。
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
这里有两份虚表了,分别针对DerivedClass1与DerivedClass2,在&DerivedDericedClass_meta下方的数字是首地址偏移量,靠下面的虚表的那个-16表示指向这个虚表的虚指针的内存偏移,这正是DerivedClass2中的{vfptr}在DerivedDerivedClass的内存偏移。

如果采用虚继承,像下面这样:
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
1 class DerivedClass1: virtual public Base 2 { 3     int c; 4 public: 5     void DerivedCommonFunction(); 6     void virtual VirtualFunction(); 7 }; 8  9 class DerivedClass2 : virtual public Base10 {11     int d;12 public:13     void DerivedCommonFunction();14     void virtual VirtualFunction();15 };16 17 class DerivedDerivedClass :  public DerivedClass1, public DerivedClass218 {19     int e;20 public:21     void DerivedDerivedCommonFunction();22     void virtual VirtualFunction();23 }; C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件

C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
Base类没有变化,但往下看:
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
DerivedClass1就已经有变化了,原来是先排虚表指针与Base成员变量,vfptr位于0地址偏移处;但现在有两个虚表指针了,一个是vbptr,另一个是vfptr。vbptr是这个DerivedClass1对应的虚表指针,它指向DerivedClass1的虚表vbtable,另一个vfptr是虚基类表对应的虚指针,它指向vftable。
下面列出了两张虚表,第一张表是vbptr指向的表,8表示{vbptr}与{vfptr}的偏移;第二张表是vfptr指向的表,-8指明了这张表所对应的虚指针位于内存的偏移量。
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
DerivedClass2的内存分布类似于DerivedClass1,同样会有两个虚指针,分别指向两张虚表(第二张是虚基类表)。
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
下面来仔细看一下DerivedDerivedClass的内存分布,这里面有三个虚指针了,但base却只有一份。第一张虚表是内含DerivedClass1的,20表示它的虚指针{vbptr}离虚基表指针{vfptr}的距离,第二张虚表是内含DerivedClass2的,12表示它的虚指针{vbptr}离虚基表指针{vfptr}的距离,最后一张表是虚基表,-20指明了它对应的虚指针{vfptr}在内存中的偏移。
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件
C++检验内存是否丢失还是很有一套的不信你来瞧瞧 b2b软件

虚继承的作用是减少了对基类的重复,代价是增加了虚表指针的负担(更多的虚表指针)。
下面总结一下(当基类有虚函数时):

这里是一个简单的内存泄漏自动检查机制。只适用于单线程情况下。工作原理就是将已经分配的内存用一个双向链表串联起来,释放内存时从链表里删除。在程序退出时,将链表中未释放的内存打印出来。同时在内存块中保存文件名和行号,用于定位内存分配地址。

  001 // placement_new.cpp : Defines the entry point for the console application.

  002 //

  003

  004 #include "stdafx.h"

  005 #include <iostream>

  006 #include <cassert>

  007

  008 #define ASSERT assert

  009 char buff[1024];

  010

  011 using namespace std;

  012

  013 struct MEMORY_TAG

  014 {

  015 int nSize;

  016 const char* szFile;

  017 int nLine;

  018 MEMORY_TAG* pPrev;

  019 MEMORY_TAG* pNext;

  020 };

  021

  022 MEMORY_TAG g_header = {0, 0, 0, 0, 0};

  023 // 打印出所有未释放的内存

  024 void DumpUnAllocatedMem()

  025 {

  026 for(MEMORY_TAG* pEntry = g_header.pNext; pEntry; pEntry = pEntry->pNext)

  027 {

  028 printf("%s(%d) : leak %d bytes ", pEntry->szFile ? pEntry->szFile : "", pEntry->nLine, pEntry->nSize);

  029 }

  030 }


  031 // 统计已经分配的内存块数和字节数

  032 int CountOfAllocatedMem(void* pnSize= NULL)

  033 {

  034 int nCount = 0;

  035 size_t allocated = 0;

  036 for(MEMORY_TAG* pEntry = g_header.pNext; pEntry; pEntry = pEntry->pNext)

  037 {

  038 allocated += pEntry->nSize;

  039 nCount++;

  040 }

  041 printf("%d count, %d total ", nCount, allocated);

  042 return nCount;

  043 }

  044

  045 // 实现一个全局operator new可以有文件名和行号作为参数

  046 void* operator new(size_t size, const char* pszFile, int line)

  047 {

  048 size_t nRealSize = size + sizeof(MEMORY_TAG);

  049 MEMORY_TAG* pTag = (MEMORY_TAG*)malloc(nRealSize);

  050

  051 pTag->nSize = nRealSize;

  052 pTag->szFile = pszFile;

  053 pTag->nLine = line;

  054 // 插入队列头部

  055 if (g_header.pNext)

  056 {

  057 g_header.pNext->pPrev = pTag;

  058 }

  059 pTag->pNext = g_header.pNext;

  060 g_header.pNext = pTag;

  061 pTag->pPrev = &g_header;


  062

  063 return pTag + 1;

  064 }

  065

066 void* operator new(size_t size)

  067 {

  068 return (operator new(size, __FILE__, __LINE__));

  069 }

  070

  071

  072 void operator delete(void* p, const char*, int line)

  073 {

  074 delete p;

  075 }

  076

  077 void operator delete(void* p)

  078 {

  079 MEMORY_TAG* pTag = (MEMORY_TAG*)(((char*)p)-sizeof(MEMORY_TAG));

  080 // 从队列中删除

  081 pTag->pPrev->pNext = pTag->pNext;

  082 if (pTag->pNext)

  083 {

  084 pTag->pNext->pPrev = pTag->pPrev;

  085 }

  086 free(pTag);

  087 }

  088

  089 class Object

  090 {


  091 public:

  092 Object()

  093 {

  094 cout << "Object's contructor." << endl;

  095 }

  096

  097 ~Object()

  098 {

  099 cout << "Object's destructor." << endl;

  100 }

  101

  102 char data[1024];

  103 };

  104

  105 #define NEW new(__FILE__, __LINE__)

  106

  107 int _tmain(int argc, _TCHAR* argv[])

  108 {

  109 ASSERT(CountOfAllocatedMem() == 0);

  110 Object* pObj = new(buff) Object;

  111

  112 pObj->~Object();

  113

  114 pObj = NEW(Object);

  115 ASSERT(CountOfAllocatedMem() == 1);

  116

  117 delete pObj;

  118 ASSERT(CountOfAllocatedMem() == 0);

  119

  120 pObj = NEW Object;


  121 ASSERT(CountOfAllocatedMem() == 1);

  122 delete pObj;

  123 ASSERT(CountOfAllocatedMem() == 0);

  124

  125 pObj = NEW Object;

  126

  127 char* p = new char[968];

  128 ASSERT(CountOfAllocatedMem() == 2);

  129

  130 DumpUnAllocatedMem();

  131 return 0;

  132 }



unto信息发布软件自动群发586招聘网nextC++只要几行代码就知道亲的图片是什么格式后缀和大小胸围
回复

使用道具 举报

0

主题

612

帖子

596

积分

积分
596
信息发布软件沙发
发表于 2017-6-22 19:39:29 | 只看该作者
网站制作的很好,企业团队效率就是高!

回复 支持 反对

使用道具 举报

0

主题

575

帖子

555

积分

积分
555
推广工具板凳
发表于 2017-6-22 22:41:55 | 只看该作者
和5号笨蛋

回复 支持 反对

使用道具 举报

0

主题

1019

帖子

1024

积分

积分
1024
软件定制开发地板
发表于 2017-6-25 07:04:45 | 只看该作者
一如既往的好,效率挺高,非常感谢

回复 支持 反对

使用道具 举报

0

主题

575

帖子

555

积分

积分
555
5#定制软件#
发表于 2017-7-5 15:40:44 | 只看该作者
间做完,还不错,客服态度也好

回复 支持 反对

使用道具 举报

0

主题

661

帖子

669

积分

积分
669
6#定制软件#
发表于 2017-7-6 05:42:08 | 只看该作者
好,专业的就是不一样,价格很便宜,大公司,给中评是因为对客服的无语

回复 支持 反对

使用道具 举报

0

主题

606

帖子

599

积分

积分
599
7#定制软件#
发表于 2017-7-13 02:15:32 | 只看该作者
家。谢谢喽。我的同事们都很喜欢呢。下次再来哦

回复 支持 反对

使用道具 举报

0

主题

615

帖子

589

积分

积分
589
8#定制软件#
发表于 2017-7-17 19:17:40 | 只看该作者
感谢店家悉心整理。再次表示感谢。

回复 支持 反对

使用道具 举报

0

主题

619

帖子

603

积分

积分
603
9#定制软件#
发表于 2017-7-18 21:49:20 | 只看该作者
好,兢兢业业做事,不错。多努力,有需要还会来的。

回复 支持 反对

使用道具 举报

1

主题

640

帖子

612

积分

积分
612
QQ
10#定制软件#
发表于 2017-7-21 16:25:08 | 只看该作者
找到好贴不容易,我顶你了,谢了

回复 支持 反对

使用道具 举报

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

本版积分规则

相关导读
信息发布软件AIWROK软件平台设备信息全面检测工具例子
AIWROK软件平台设备信息全面检测工具例子
信息发布软件AIWROK创建和放大日志窗口并展示动态内容
AIWROK创建和放大日志窗口并展示动态内容
信息发布软件AIWROK软件device相关方法获取设备信息例子
AIWROK软件device相关方法获取设备信息例子[/backcolor]
信息发布软件数据库MySQL实时内容随机调用
数据库MySQL实时内容随机调用
信息发布软件AIWROK软件分享一个特效苹果H5页面
AIWROK软件分享一个特效苹果H5页面
信息发布软件数据库MYQ业务流程心跳程序启动
数据库MYQ业务流程心跳程序启动
信息发布软件数据库MySQL功能支持创建表插入中文数据查询删除功能例子
数据库MySQL功能支持创建表插入中文数据查询删除功能例子
信息发布软件AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例
信息发布软件AIWROK软件txt_文件读写方法小结
AIWROK软件txt_文件读写方法小结
信息发布软件AIWROK软件file文件操作方法小结
AIWROK软件file文件操作方法小结
信息发布软件AIWORK软件配置读写H5演示配套脚本
AIWORK软件配置读写H5演示配套脚本
信息发布软件AIWROK配置读写功能演示示例
AIWROK配置读写功能演示示例
信息发布软件AIWROK截图缓存工具
AIWROK截图缓存工具
信息发布软件AIWROK线程许可证工具
AIWROK线程许可证工具
信息发布软件整理了AIWROK环境下常用的Date对象和sleep对象方法
整理了AIWROK环境下常用的Date对象和sleep对象方法
信息发布软件FastUI界面普通用法
FastUI界面普通用法
信息发布软件FastUI界面类[window]方法小结
FastUI界面类[window]方法小结 方法 1:close(关闭指定窗口)方法 2:closeAll(关闭所有窗口)方法 3:loadUI(加载 UI 界面)方法 4:onClose(监听窗口关闭事件)方法 5:onLoad(监听窗口加载事件)方法 6:setFull(设置窗口全屏)方法 7:setHeight(设置窗口高度)方法 8:setHidden(隐藏窗口)方法 9:setLeft(设置窗口 X 轴坐标)方法 10:setTop(设置窗口 Y 轴坐标)方法 11:setVisable(显示隐藏的窗口)方
信息发布软件AIWROK软件按钮监听UI界面与事件监听功能演示
AIWROK软件按钮监听UI界面与事件监听功能演示.
信息发布软件AWIROK软件多选[uiCheckBox]方法小结
AWIROK软件多选方法小结 方法一:findByID 加载多选控件方法二:getAllChecked 获取所有选中项方法三:getAllSelect 获取所有选项方法四:getChecked 获取某个选项是否选中方法五:setChecked 设置某个选项是否选中方法六:setCheckeds 设置多个选项是否选中方法七:setHeight 设置高度
信息发布软件AIWROK日志演示开启日志显示 → 放大 → 关闭代码
AIWROK日志演示开启日志显示 → 放大 → 关闭代码
信息发布软件&#127983;AIWROK数组方法高级应用案例
🏯AIWROK数组方法高级应用案例
信息发布软件AIWROK软件日志悬浮窗简化版自动切换位置
AIWROK软件日志悬浮窗简化版自动切换位置
信息发布软件AIWROK软件String实例演示
AIWROK软件String实例演示
信息发布软件AIWROK软件S内置String类[String]方法小结
AIWROK软件S内置String类[String]方法小结 方法 1:charAt[/backcolor]方法 2:charCodeAt[/backcolor]方法 3:indexOf[/backcolor]方法 4:lastIndexOf[/backcolor]方法 5:length[/backcolor]方法 6:match[/backcolor]方法 7:replace[/backcolor]方法 8:replaceAll[/backcolor]方法 9:split[/backcolor]方法 10:startsWith[/backcolor]方法 11:substr[/backcolor]方法 12:substring[/backcolor]方法 13:trim[/backcol
信息发布软件AIWROK软件完整的WebSocket客户端示例
这段代码是一个完整的WebSocket客户端示例,用于连接到指定的WebSocket服务器并处理各种事件。具体来说,代码的作用如下: 定义服务器地址:首先定义了一个服务器的IP地址和端口号 var ip = "154.37.221.104:8886";。 创建WebSocket对象:尝试创建一个新的WebSocket对象 var ws = new WebSocket();。注意,这里的 new ws() 应该是 new WebSocket()。 添加事件监听器:代码中尝试为WebSocket对象添加事件监听器,但这里有一个错误。
信息发布软件AIWROK软件苹果系统中实现四种基本滑动操作
AIWROK软件苹果系统中实现四种基本滑动操作
信息发布软件hid的滑动没有百分比坐标滑动吗
hid的滑动没有百分比坐标滑动吗
信息发布软件单选控件[uiRadioButton]方法小结
单选控件方法小结 方法 1:加载单选控件[/backcolor]方法 2:获取选中项[/backcolor]方法 3:设置高度[/backcolor]方法 4:设置选中项[/backcolor]
信息发布软件AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
信息发布软件AIWROK软件安卓随机工具应用函数生成
AIWROK软件安卓随机工具应用函数生成
信息发布软件用在AIWORK软件代码中的实用符号分类整理2
用在AIWORK软件代码中的实用符号分类整理2 软件IDE用Emoji符号分类整理(含用途说明)一、表情与情感1. 微笑 [*]😀 笑脸(基础开心反馈,用于操作成功后的友好提示) [*]😃 笑脸大眼睛(强化开心情绪,用于重要任务完成后的积极反馈) [*]😄 笑脸和微笑的眼睛(温和友好的状态,用于日常交互中的正向回应) [*]😁 带着微笑的眼睛(轻松愉悦的反馈,用于轻度成功或趣味操作) [*]
信息发布软件AIWROK软件图像二值化的各种方法和应用场景
AIWROK软件图像二值化的各种方法和应用场景
信息发布软件AIWROK软件找图区分页面变化和卡死状态
AIWROK软件找图区分页面变化和卡死状态
信息发布软件AIWROK苹果系统Map 数据管理[map]小结
AIWROK苹果系统Map 数据管理[map]小结 方法一:add(添加键值对)[/backcolor]方法二:delete(删除指定键值对)[/backcolor]方法三:clear(清空所有键值对)[/backcolor]方法四:get(根据键获取值)[/backcolor]方法五:getAllValue(获取所有值)[/backcolor]方法六:toString(转换为字符串)[/backcolor]完整示例:
信息发布软件AIWROK软件用图找图示例templateMat方法
AIWROK软件用图找图示例templateMat方法
信息发布软件苹果JS代码运行时[selfRunTime]小结
苹果JS代码运行时[selfRunTime]小结 方法一:stop 停止运行[/backcolor]方法二:runOnUIThread ui 线程中运行函数[/backcolor]
信息发布软件苹果系统专用H5创建一个绿色文件
苹果系统专用H5创建一个绿色文件
信息发布软件AIWROK软件技术分享苹果IOS系统获取外部IP
AIWROK软件技术分享苹果IOS系统获取外部IP
信息发布软件AIWROK软件安卓总结图像视觉处理[opencv]方法
AIWROK软件安卓总结图像视觉处理[opencv]方法 方法1:getcolorNum:获取区域颜色数量 方法2:gradientProcessing:计算梯度 方法3:invertColor:颜色翻转 方法4:openImg:开运算 方法5:removeSmallObjects:去杂点 方法7:shapeSplit:分隔提取 方法8:shapeSplitEx:cv 文件分隔提取 方法9:templateMatch:模板匹配 方法10:threshold:二值化 方法11:toGray:转灰度图 方法12:
信息发布软件AIWROK软件start.js简单H5直接调用
信息发布软件AIWROK苹果系统简单的UI界面分享一下
信息发布软件图像视觉处理[opencv]小结3
图像视觉处理[opencv]小结3 方法1:findImageOneSift:找图(SIFT 算法) 方法2:findImagesEx:cv 文件找图 方法3:findMultiColor:找色 方法4:findMultiColorEx:cv 文件多点找色 方法5:gaussianBlur:高斯滤波 方法6:getAllShap:获取所有 Shape 方法7:getContours:获取轮廓图
信息发布软件AIWROK软件图像视觉处理[opencv]小结2
AIWROK软件图像视觉处理[opencv]小结2 方法 1:coverageArea:图片抹除方法2:dilateImage:图像膨胀 方法3:drawRect:Shape 绘制 方法4:erodeImage:图像腐蚀 方法5:filtersEx:cv 文件滤镜 方法6:findImageOneKAZE:找图(KAZE 算法)
信息发布软件AIWORK软件图像视觉处理[opencv]小结1
AIWORK软件图像视觉处理[opencv]小结1// 1. HSV颜色变换:对图像进行HSV通道的颜色变换,可调整色相、饱和度、对比度// 参数说明:输入图像(Mat)、色相参数(int)、饱和度参数(int)、对比度参数(int)// 返回值:处理后的Mat图像function hsvTransform() { // 截取屏幕区域(432,768)大小、100质量的图像并转为Mat格式 var mat = screen.screenShot(432, 768, 100).getMat(); // 调用HSV变换:色相17、饱和度17、对比度17
信息发布软件浏览器H5方法小结
浏览器H5方法小结
信息发布软件AIWROK软件漂亮对接H5简单示例
AIWROK软件漂亮对接H5简单示例
信息发布软件AIWROK软件线程优先级示例
AIWROK软件线程优先级示例
信息发布软件AIWORK软件在屏幕底部显示实时日志可以移动
AIWORK软件在屏幕底部显示实时日志可以移动
信息发布软件安卓HID贝塞尔曲线手势操作示例
安卓HID贝塞尔曲线手势操作示例
信息发布软件安卓端与H5页面交互的完整实现
安卓端与H5页面交互的完整实现
信息发布软件苹果系统里如何使用OCR进行文本识别并执行点击操作
苹果系统里如何使用OCR进行文本识别并执行点击操作
信息发布软件AIWROK软件列表控件 [uiList] 实例演示
AIWROK软件列表控件 实例演示
信息发布软件安卓列表控件 [uiList] 方法小结
安卓列表控件 方法小结 方法 1:add方法 2:addArray方法 3:clear方法 4:delete方法 5:execSQL方法 6:exportData方法 7:exportTxt方法 8:findByID方法 9:getColumnCount方法 10:getColumnIndex方法 11:getColumnName方法 12:getColumnNames方法 13:getCount方法 14:getCursorSetp方法 15:getPosition方法 16:getString方法 17:getStringl方法 18:importData方法 19:isLast方法 20:move方法 21:moveNext方法
信息发布软件安卓版AIWROK软件APP操作类小结合集
安卓版AIWROK软件APP操作类小结合集 方法 1:代理模式获取当前 activity 地址[/backcolor]方法 2:getAllApp 获取所有 app[/backcolor]方法 3:getAppName 获取 APP 名字[/backcolor]方法 4:getCurrentActivity 无障碍获取当前 activity 地址[/backcolor]方法 5:getLocalAppName 获取自己 APP 名字(AIWORK 打包)[/backcolor]方法 6:getLocalVerName 获取自己版本号(AIWORK 打包)[/backcolor]方法 7:getMemory
信息发布软件AIWROK软件苹果点击开始按钮运行最简单的封装脚本例子
AIWROK软件苹果点击开始按钮运行最简单的封装脚本例子 另外主脚本.js封装的:
信息发布软件安卓toast吐司的各种方法应用实例
安卓toast吐司的各种方法应用实例
信息发布软件AIWROK软件支持悬浮窗自由定位和拖拽功能
AIWROK软件支持悬浮窗自由定位和拖拽功能
信息发布软件AIWROK软件安卓工具箱悬浮窗
AIWROK软件安卓工具箱悬浮窗
信息发布软件安卓通过floatUI创建悬浮窗H5界面
安卓通过floatUI创建悬浮窗H5界面
信息发布软件安卓专用吐司toast倒计时到指定时间并显示剩余时间
安卓专用吐司toast倒计时到指定时间并显示剩余时间
信息发布软件aiwrok软件适用于安卓环境下的外网IP获取工具实例
aiwrok软件适用于安卓环境下的外网IP获取工具实例
信息发布软件苹果系统激活模式投屏
1.安装AK-Runner链接下载https://www.pgyer.com/akrunner或者扫码下载AK-Runner.ipa2.安装后需要信任证书找到 设置 --通用---VPN与设备管理3.激活AK-Runner激活需要pc,首先下载激活器📎AK-Runner激活器.zip新手机需要爱思助手协助开启开发者模式,开启过的可以忽略。(爱思助手最好使用最新版)打开爱思助手按照提示操作即可,打开实时投屏。能获取到屏幕信息即可。如果没有出现可能是手机没有开启开发者模式,参考爱思助手
信息发布软件AIWROK软件全部硬件HID按键码小结集合
AIWROK软件全部硬件HID按键码小结集合 方法真实示例:
信息发布软件IOS苹果系统创建具有现代H5视觉效果的界面
IOS苹果系统创建具有现代H5视觉效果的界面
信息发布软件IOS苹果示例如何使用不同的UI风格创建直接运行脚本的按钮
IOS苹果示例如何使用不同的UI风格创建直接运行脚本的按钮

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2025-12-19 17:38 , Processed in 0.815414 second(s), 56 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

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