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

 找回密码
 立即注册
搜索
查看: 2153|回复: 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软件安卓AIWROK汇集软件点击
AIWROK软件安卓AIWROK汇集软件点击
信息发布软件苹果系统点击方法综合示例
苹果系统点击方法综合示例
信息发布软件AIWROK苹果系统找图方法完整示例集合
AIWROK苹果系统找图方法完整示例集合
信息发布软件苹果系统找图方法完整示例集合
苹果系统找图方法完整示例集合
信息发布软件苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子
信息发布软件AIWORK软件数组高级示例
AIWORK软件数组高级示例
信息发布软件AIWROK软件运算符封装库示例
AIWROK软件运算符封装库示例
信息发布软件AIWROK软件语法运行小示例
AIWROK软件语法运行小示例
信息发布软件AIWROK软件JS循环小示例
AIWROK软件JS循环小示例
信息发布软件AIWROK软件H5网页被主脚本获取值用法
AIWROK软件H5网页被主脚本获取值用法
信息发布软件AIWROK软件创建可暂停恢复的多线程任务
AIWROK软件创建可暂停恢复的多线程任务
信息发布软件AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
信息发布软件AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 .
信息发布软件AIWROK软件根据时间段执行异步任务支持多线程并行处理
AIWROK软件根据时间段执行异步任务支持多线程并行处理
信息发布软件H5自动开关执行脚本功能演示
H5自动开关执行脚本功能演示
信息发布软件AIWROK软件H5单选脚本运行示例
AIWROK软件H5单选脚本运行示例
信息发布软件H5任务脚本选择与执行中心
H5任务脚本选择与执行中心
信息发布软件H5里CheckBox控件演示
H5里CheckBox控件演示
信息发布软件AIWROK软件正则用法实际例子
AIWROK软件正则用法实际例子
信息发布软件AIWROK软件权限管理器实现
AIWROK软件权限管理器实现
信息发布软件AIWORK软件节点方法无碍示例子
AIWORK软件节点方法无碍示例子
信息发布软件JSON.stringify 和 JSON.parse 完整示例
JSON.stringify 和 JSON.parse 完整示例
信息发布软件AIWROK软件展示JavaScript各种语句标识符的用法
AIWROK软件展示JavaScript各种语句标识符的用法
信息发布软件JS巧妙地组合使用各种条件语句
JS巧妙地组合使用各种条件语句
信息发布软件AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
信息发布软件HID中文输入智能打字功能
HID中文输入智能打字功能
信息发布软件AIWROK软件对象工具函数库例子
AIWROK软件对象工具函数库例子
信息发布软件AIWROK软件H5交互演示黄色主题
AIWROK软件H5交互演示黄色主题
信息发布软件H5单按钮执行脚本示例
H5单按钮执行脚本示例
信息发布软件苹果H5界面完整调用脚本示例
苹果H5界面完整调用脚本示例
信息发布软件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软件找图区分页面变化和卡死状态

QQ|( 京ICP备09078825号 )

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

GMT+8, 2026-2-6 01:37 , Processed in 0.936306 second(s), 57 queries .

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

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