qtcreator_python_openGL
文章平均质量分 73
包括 opencv,openGL,halcon等深度学习图像;包括C++,C,python,html,qtcreator,VS201X,C#,go语言 等上位机应用程序;windows开发设置。
寒听雪落
软件著作权申报45天包下证,两位数价格,可联系
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一些指令替换记录
本文介绍了两个C语言程序:第一个程序使用system函数执行用户输入的字符串命令,通过fgets获取输入并去除换行符后构建echo命令;第二个程序实现了一个完整的TFTP客户端,包含文件上传下载功能。TFTP客户端支持GET和PUT操作,使用UDP协议传输数据,包含数据包创建、解析、错误处理等核心功能,并提供了超时重传机制。程序采用模块化设计,分为头文件、实现文件和主程序三部分,支持通过环境变量配置服务器地址,默认使用本地回环地址127.0.0.1。原创 2025-12-16 11:22:45 · 112 阅读 · 0 评论 -
Qt打包生成可执行程序
3,打开Qt命令行,也就是Qt5.8 64-bit for desktop(MSVC 2015),然后进入你拷贝EXE文件的文件夹下;4.封包操作,需要用到QT的控制台,接下来,我们需要电脑桌面上创建一个新的文件夹,注意千万不要有中文路径。最后一步,我们使用windeployqt工具把库加到我们新创建的这个文件夹里面。我们使用命令进到我们新创建的文件夹所在的路径,命令如下。因为我们要把写好的程序发给用户来用,我们写好的源码也不是随便给别人的。注意:图标的格式必须为.ico这个格式的,其他格式不行。原创 2024-06-12 23:27:20 · 3712 阅读 · 0 评论 -
QT中加入动态库和静态库的使用
即:cc main.o -l add -L .生成ARM用的库文件:arm-linux-gnueabihf-gcc -shared add.o -o armadd.so。生成交叉编译arm用的.a静态库:arm-linux-gnueabihf-ar -r armadd.a add.o。生成ARM版本的用的目标文件:arm-linux-gnueabihf-gcc -c -fpic add.c。生成arm使用的目标文件x.o:arm-linux-gnueabihf-gcc -c add.c。原创 2024-06-07 00:22:14 · 2257 阅读 · 0 评论 -
虚拟机创建共享文件夹
创建共享文件夹:/usr/bin/vmhgfs-fuse .host:/ /mnt/win -o subtype=vmhgfs-fuse,allow_other。进入vmware-tools-distrib目录,运行vmware-install.pl ,然后一直单击y和回车。4,单击“浏览”,选择一个要共享的文件夹,单击“确定”,如果有必要,也可以更改名称,单击“下一步”2,选择“选项”页面,选择“共享文件夹”,在右侧单击“总是启用”1,单击虚拟机的菜单栏上的“虚拟机”->“设置”。原创 2024-06-05 22:41:02 · 1446 阅读 · 0 评论 -
Qt正则表达式用法
\d{3}:\\d表示转义字符,因为C++用\\表示实际的\,即\\d表示整数,后面的{3}表示目的字符串有连续的三个整数,比如123。匹配邮箱地址:\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Z|a-z]{2,}\b。[a-z]+:表示匹配中括号里面小写字母a-z的任意一个字母,后面的+号表示要查找的字符串至少出现一个小写字母。[A-Z]+:表示匹配中括号里面大写字母A-Z的任意一个字母,后面的+号表示要查找的字符串至少出现一个大写字母。表示重复前面的字符0次或者1次。原创 2024-06-05 22:37:16 · 754 阅读 · 0 评论 -
Anaconda3-2020.02-Windows-x86_64安装及使用步骤
activate 能将我们引入anaconda设定的虚拟环境中, 如果你后面什么参数都不加那么会进入anaconda自带的base环境,可以输入python试试, 这样会进入base环境的python解释器, 如果你把原来环境中的python环境去除掉会更能体会到, 这个时候在命令行中使用的已经不是你原来的python而是base环境下的python.而命令行前面也会多一个(base) 说明当前我们处于的是base环境下。安装时间根据你的电脑配置而异,电脑配置高,硬盘是固态硬盘。原创 2024-06-05 22:32:17 · 2356 阅读 · 0 评论 -
C语言指针用法完善篇
指针数组的表现形式为char *p[10],根据C语言的优先级,p先跟[]结合,p[10]是一个数组,然后p[10]再跟*结合,变成了*p[10]的指针数组,根据前面的char类型,所以这个是一个存放char* 类型的指针数组。指针数组的表现形式为char *p[10],根据C语言的优先级,p先跟[]结合,p[10]是一个数组,然后p[10]再跟*结合,变成了*p[10]的指针数组,根据前面的char类型,所以这个是一个存放char* 类型的指针数组。根据指针变量中存储的内存编号去访问对应的内存。原创 2024-06-03 21:26:13 · 987 阅读 · 0 评论 -
subline text3安装numpy,scipy,matplotlib,pandas,sklearn,ipynb
在subline text3导入时报如下错误 ModuleNotFoundError: No module named 'matplotlib'直接进入python环境,输入python -m pip install numpy就不会报错。1,numpy(基础数值算法) 安装,要是在cmd直接安装到最后会报错,5,sklearn( 深度学习) 安装(scipy)也从这里安装进来了。3, matplotlib(数据可视化)安装同上。2. scipy (科学计算)安装。6.如何打开.ipynb文件。原创 2024-06-03 19:56:34 · 1371 阅读 · 1 评论 -
根据官方源码重复记录的内容
分析一下read_g()函数。从中间数组的内容通过sscanf函数获取回一个dobule类型的数据,放大10倍后通过调用fix函数进行取整,以该整数为下标对所有支持G代码数组(1000个,-1表示不支持的G代码,其他有效值表示隶属的G代码组编号)进行取值,判定是否为-1,-1表示不支持的G代码操作,返回错误代码。除了上述的MDI方式使用G代码解释器外,还可以通过传入G代码文件,进行调用,调用结束后会返回处理后的G代码到屏幕,也可以同时传入G代码文件和生成的数据的保存文件名,实现输出到文件中。原创 2024-05-16 17:34:15 · 214 阅读 · 0 评论 -
常见的语法报错的记录
a和b属于不同的栈内存,return a+b使值复制到临时变量(返回值寄存器)中,函数调用结束,a+b栈内存销毁,但临时变量中依然保存返回值。经过分析发现,当父类隐藏后,子类m_selectGateway和父类是一个对象树概念,父类隐藏后,子类就算关闭也不会消失,必须等待父类关闭才会消失,而父类隐藏了,关闭不了,程序就在一直运行,所以会爆出此错误。.h文件中相关的函数在cpp文件中没有定义,或者说函数的声明(.h中)与定义(.cpp中)不一致。解决方法:查找遗漏的函数,根据需要,具体的定义。原创 2024-04-23 10:59:26 · 424 阅读 · 0 评论 -
全局变量和局部变量(static,extern,volatile)
全局变量存储区的生命周期是整个程序的执行时间范围;值得注意的是虽然局部变量的声明周期得到了很大的提升,但他的作用域没有发生任何的改变,还是只能在那个局部的范围内使用。2,一个共享变量(类的成员变量、类的静态成员变量)被 volatile 修饰之后:保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。声明在函数内部的变量叫局部变量,局部变量的作用域是它所在函数内部的所有语句,声明在所有函数外边的变量叫全局变量,它们的作用域是程序中的所有语句。原创 2024-04-17 08:00:00 · 3619 阅读 · 0 评论 -
ubuntu安装向日葵远程软件
报上面错误是因为缺少依赖包,先使用命令sudo apt-get update更新源,然后使用命令sudo apt-get install -f -y就能解决并完成deb的安装。yum install -y libappindicator-gtk3安装成功后,再次输入rpm -ivh sunloginclient-10.0.0-1.x86_64.rpm即可。使用命令rpm -ivh sunloginclient-10.0.0-1.x86_64.rpm安装时,出现如错误:对不起,无法工作,此文件不被支持。原创 2024-04-15 09:00:00 · 4620 阅读 · 2 评论 -
动态内存分配,引用和类型转换
1)可以将函数返回类型声明为引用,避免函数返回值带来的内存开销,如果一个函数返回类型被声明为引用,那么该函数的返回值就是一个左值。2)引用参数可能意外修改实参的值,如果不希望修改实参本身,可以将形参定义为常引用,提高传参的效率同时还可以接收常量型的实参。1)可以为函数的部分或全部参数指定缺省值,调用该函数时,如果不给实参,就取缺省值作为相应的形参值。1)引用用于函数的参数,可以修改实参的值,可以减小函数调用的开销,避免虚实结合过程中对实参的复制。//error,C++2011中叫右值引用。原创 2023-12-19 18:23:19 · 1739 阅读 · 0 评论 -
QPainter绘图和QChart图表和QCustomplot绘曲线图
Qt里的所有绘图,比如一个按钮和一个Label的显示,都有绘图系统来执行。绘图系统基于 QPainter、QPaintDevice和QPainEngine类。QPainter是可以直接用来操作绘图的类,而 QPaintDevice和QPainEngine都比QPainter更底层,我们只需要了解一下QPaintDevice和 QPainEngine就行了,用下面一张图来表示它们的关系。用于显示的类,如 Widget、QPixmap、QImage、Qlabel等可视类控件都可以充当绘图区域的“画布”,从 Q原创 2024-03-22 23:01:31 · 1523 阅读 · 0 评论 -
Windows设置NTP同步时间服务器
1,关闭Windows系统自带的防火墙2,在桌面上右击“计算机”,选择“管理”,选择“服务”。3,选中“WindowsTime”,设置为开启,这样就可以将“WindowsTime”这一个服务打开。4,“开始”-->“运行”-->输入“regedit”打开注册表。5,在注册表中依次展开:HKEY_LOCAL_MACHINE、SYSTEM、CurrentControlSet、Services、W32Time、TimeProviders、NtpServer, 在Nt..原创 2020-09-02 20:19:14 · 5364 阅读 · 0 评论 -
QT鼠标事件和按键事件
但也需要注意的是,由于QApplication::postEvent()是基于事件循环的机制进行处理的,所以它并不是实时的,可能会存在一定的延迟。QApplication::sendEvent()和QApplication::postEvent()都是Qt中用于发送事件的函数,它们之间的区别在于事件的处理方式。QApplication::sendEvent(target, event)是直接将事件event发送给目标target,并阻塞当前线程等待目标处理完事件后再继续执行,这个过程类似于一个同步调用。原创 2024-03-29 09:00:00 · 421 阅读 · 0 评论 -
linux 基本操作指令总结
一,文件系统和备份mkfs /dev/mmcblk1p1 在mmcblk1p1分区创建一个文件系统mke2fs /dev/mmcblk1p1 在mmcblk1p1分区创建一个linux ext2的文件系统mke2fs -j /dev/mmcblk1p1 在mmcblk1p1分区创建一个linux ext3(日志型)的文件系统mkfs -t vfat 32 -F /dev/mmcblk1p1 创建一个 FAT32 文件系统fdformat -n /dev/fd0 格式化一个软盘mksw原创 2020-08-30 23:22:04 · 855 阅读 · 0 评论 -
QT增加线程函数步骤流程
(5) 在主界面cpp文件中连接信号和槽,用于接收子线程传递过来的数据,这里的信号是自定义的信号,参数是非基本类型,所以需要对信号进行注册。5,子线程只能处理数据,不能直接在子线程操作界面(否则会崩溃),如果想要操作界面,需要将子线程的数据传递给界面主线程进行操作,这样就用到了我们信号和槽,子线程和主线程之间传递参数。6,线程运行完毕,需要安全退出(线程异常退出有可能导致崩溃),这里安全退出有两种方式,一种是标志位,一种是通过检查线程运行状态,通过quit,wait来实现,这里我们用第二种方式退出线程。原创 2024-03-20 17:27:54 · 1485 阅读 · 0 评论 -
QT信号和槽机制connect用法
在Qt信号槽中使用自定义类型,在不跨线程时使用自定义类型signal/slot来传递,可能不会出现什么问题,一旦涉及跨线程就很容易出错(即文章开头出现的错误)。,以及一些我们自定义的结构体时,在尝试触发某个信号时程序崩溃或者报错:QObject::connect: Cannot queue arguments of type 'xxx'(Make sure 'xxx' is registered using qRegisterMetaType().)。之类的,但当我们想要传递相对比较复杂的参数,例如。原创 2024-03-21 13:52:35 · 710 阅读 · 0 评论 -
C语言堆栈分配和段错误原因
堆被称为动态内存,由堆管理器管理,程序中可以使用malloc函数来(向堆管理器)申请分配堆内存,使用完后使用free函数释放。堆内存的特点是:在程序运行过程中才申请分配,在程序运行中即释放(因此称为动态内存分配技术)。 栈是C语言使用的一种内存自动分配技术(注意是自动),自动指的是栈内存操作不用C程序员干预,而是自动分配自动回收的。C语言中局部变量就分配在栈上,进入函数时局部变量需要的内存自动分配,函数结束退出时局部变量对应的内存自动释放。 堆栈溢出原因:堆栈溢出一般都是由堆栈越界访问导致原创 2020-09-15 16:33:13 · 1715 阅读 · 1 评论 -
python pandas和scipy可视化用法
pandas可视化1,Series数据可视化Series提供了plot方法以index作为x,以value作为y,完成数据可视化:,ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))ts = ts.cumsum()ts.plot()2, DataFrame数据可视化DataFrame提供了plot方法可以指定某一列作为x,某一...原创 2020-07-12 23:28:24 · 1007 阅读 · 0 评论 -
QT资源添加调用
/通过调色板 红色-- Qt::red 绿色-- Qt::green。添加资源文件,新建资源文件夹,命名resource,然后点下一步,点完成。// 510,40 当前label大小。Qt设置PushButton的颜色当指示灯用。Qt控件label中显示图片并按比例缩放。资源,右键add Prefix。展示的label图片切换。原创 2024-03-30 00:42:50 · 618 阅读 · 0 评论 -
QT控件之显示控件
(10) QQuick Widget:嵌入式QML工具。(7) Horizontal Line水平线。(4) Calendar Widget日历。9,设置标签的伙伴控件,用于实现键盘快捷键。10,连接此信号以在链接被点击时执行操作。11,连接此信号以在链接被点击时执行操作。12,连接此信号以在链接被悬停时执行操作。(8) Vertial Line垂直线。6,设置文本显示格式,如纯文本、富文本等。7,设置文本交互标志,如可选中、可复制等。原创 2024-03-24 00:00:00 · 743 阅读 · 0 评论 -
QT控件之输入窗口控件
义的范围内控制一个值,并且该范围要么是环绕的(例如,从0到359度测量的角度),要么对话框布局需要一个正方形小部件。当 wrapping()为 false(默认设置)时,滑块和刻度盘之间没有真正的区别。QScrollBar 小部件提供垂直或水平滚动条,允许用户访问比用于显示文档的小部件大的文档部分。(12)QDateTimeEdit 类提供了一个用于编辑日期和时间的小部件。(8)QSpinBox允许用户通过单击上/下按钮或按下键盘上的上/下按钮来选择一个值,以增加/减少当前显示的值。用户还可以手动输入值。原创 2024-03-29 00:15:00 · 906 阅读 · 0 评论 -
Source Insight和Visual Studio Code安装和使用
c_cpp_properties.json 中的变量“includePath”用于指定工程中的头文件路径,但是“stdio.h”是 C 语言库文件,而 VSCode 只是个编辑器,没有编译器,所以肯定是没有stdio.h 的,除非我们自行安装一个编译器,比如 CygWin,然后在 includePath 中添加编译器的头文件。VSCode 支持多种语言,比如 C/C++,Python、C#等,主要用来编写 C/C++程序,所以需要安装 C/C++的扩展包,扩展包安装如图所示。完成后可以找到,然后双击打开。原创 2022-08-15 12:15:00 · 3183 阅读 · 0 评论 -
linux shell脚本语法和makefile总结
一,shell脚本的执行方式。1、path/script-name 或./script-name 在当前路径下执行脚本,需要将脚本文件的权限改为可执行。然后使用脚本的绝对路径或相对路径就可以直接执行脚本了。2、bash script-name 或 sh script-name 这是当脚本文件本身没有执行权限时常使用的方法3、source script-name 或 . script-name 这种方法通常是使用source或 “.”(点号)读入或加载指定的Shell脚本文件-h locate an原创 2022-07-24 11:39:47 · 2213 阅读 · 0 评论 -
QT TCP和UDP网络编程
代表网络概念的QTcpSocket,QTcpServer和QUdpSocket,以及QNetworkRequest,QNetworkReply和QNetworkAccessManager之类的高级类来执行使用通用协议的网络操作。在网络应用中,经常需要用到本机的主机名、IP地址、MAC地址等网络信息,Qt提供了QHostInfo和QNetworkInterface类用于此类信息查询。在程序中使用Qt网络模块,需要在pro项目配置文件加入:QT += network。原创 2024-03-28 18:56:13 · 322 阅读 · 0 评论 -
Ubuntu下caff跑mnist、vgg、imagnet等简单模型
一,Ubuntu下跑caffeCaffe,全称Convolutional Architecture for Fast Feature Embedding。 ----卷积神经网络框架caffe是一个清晰,可读性高,快速的深度学习框架。作者是贾扬清,加州大学伯克利的ph.D,现就职于Facebook。其精炼简单,是入门深度学习的必经之路,其具体配置过程如下:系统准备:联网的Ubuntu16.04步骤:1,下载配置caffe所需的依赖包打开shell(终端),获取root权限,方法:输入.原创 2020-06-23 12:01:59 · 709 阅读 · 0 评论 -
GO语言最常用的语法
Map接收时可以接收第二个参数判断key是否存在,除了slice, map, func外所有自建类型都可以作为key。slice是数组的抽象,指向原数组的地址,改变slice中的值会改变数组的值,函数传参使用slice可以避免使用数组指针len与capacity: len是数组的长度;capacity是数组的容量。索引不可以超过len;每次cap改变的时候指向array内存的指针都在变化。当在使用 append 的时候,如果 cap==len 了这个时候就会新开辟一块更大内存,然后把之前的数据复制过去。原创 2022-11-26 18:33:20 · 1514 阅读 · 0 评论 -
linux UDP服务器主动发送数据
客户端是192.168.1.22,电脑虚拟机是192.168.1.29。1,tcp服务器:写执行程序板子服务器自己的地址和端口号。tcp客户端:绑定对方(服务器)的IP地址和端口号。udp客户端:绑定对方(服务器)的IP地址和端口号。客户端自己的端口号和IP地址与服务器是不一样的。2,udp服务器:绑定自己的地址和端口号。客户端(powerpc):设置为1.29。端口号是一样的,客户端以服务器为准。端口号:端口号可以写成不一样。原创 2020-06-11 22:52:06 · 1920 阅读 · 1 评论 -
windows配置为可以同时访问网线和路由
1,内网可以ping通其它任意主机,外网也连接,但打开浏览器,不能上网;如果拔掉网线,外网就可以上网。内网:与网线相连的网外网:由笔记本的无线网卡连接到路由器,自动获得的p地址地址: 192.168.43.130掩码: 255.255.255.0网关: 192.168.43.12,输入route printcmd -> ipconfig /all,查看无线局域网或以太网的默认网关;cmd -> route print ,查看最上面 0.0.0.0 路由对应的网关就是原创 2020-08-17 13:15:42 · 607 阅读 · 0 评论 -
windows 安装配置PyCharm和python3环境
PyCharm 是一款功能强大的 Python 编辑器,具有跨平台性,但是由于纯英文的版本,对于英文较差的我们来说还是略有一点门槛。 professional 表示专业版,community 是社区版,推荐安装免费使用的社区版,除非你需要用 Python 进行 Django 等 Web 开发时才需要用到专业版。PyCharm 的下载地址:http://www.jetbrains.com/pycharm/download/#section=windows双击pycharm-community-2020原创 2020-07-12 17:44:02 · 2330 阅读 · 0 评论 -
卷积神经网络之卷积层,池化层,全连接层
pooling理论在于,图像中相邻位置的像素是相关的。对一幅图像每隔一行采样,得到的结果依然能看。经过一层卷积以后,输入的图像尺寸变化不大,只是缩小了卷积核-1。根据相邻数据的相关性,在每个nxn区域内,一般2x2,用一个数代表原来的4个数,这样能把数据缩小4倍,同时又不会损失太多信息。一副24*24的图像。用5*5卷积核卷积,结果是20*20(四周各-2),经过2*2池化,变成10*10....原创 2020-06-04 10:01:50 · 10654 阅读 · 0 评论 -
Linux-Faster-rcnn安装全过程
软件版本及硬件型号0.1软件版本Ubuntu14.04、CUDA8、CUDNN5.1 for CUDA8、opencv3.1、python版本faster-rcnn、GPU版本0.2硬件型号I7四代CPU、内存4G、固态硬盘250G、影驰GTX1070 第1章 ubuntu系统安装过程 1.1下载ubuntu14.04 下载地址: http://cdimage.ubuntu.com/netboot/14.04/?_ga=...原创 2020-05-10 23:59:34 · 855 阅读 · 0 评论 -
QT事件机制
在event()函数中我们可以设置是否接收事件,QEvent类中有accept()函数,表示接收事件并对事件进行处理,ignore()函数,表示不接收该事件。QWidget类是所有窗口类的基类,它重新实现了event()函数,并对一些典型的事件定义了专门处理函数,event()函数会根据事件的类型自动去运行相应的事件处理函数,这些处理函数是pro-tected virtual, 不能被外部调用,但可以被派生类重新实现。事件就是对象,派生自QEvent抽象类,事件的产生,就是创建一个对象。原创 2024-03-24 15:21:01 · 1227 阅读 · 0 评论 -
枚举,联合,宏定义,结构体
(1)枚举也可以用来创建新的数据类型,枚举类型存储区就是一个整数类型存储区,只不过这个存储区里只能记录有限的几个整数(2)声明枚举类型时需要提供一组名称,每个名称代表一个整数,这些整数都可以记录在枚举类型存储区里(3)声明枚举类型的时候需要使用enum关键字,第一个枚举名称对应的整数是0,向后依次递增。(4)可以在声明枚举类型的时候指定某个名称对应的整数,它后面的名称对应的整数会随之改变。联合也可以用来声明新的数据类型,联合存储区可以用不同的方式解释。联合也需要声明,声明联合的时候需要使用union关键字。原创 2020-09-02 20:48:32 · 1069 阅读 · 0 评论 -
Qt读取本地系统时间的几种方式
功能为根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,最多向strDest中存放maxsize个字符。该函数返回向strDest指向的字符串中放置的字符数。typedef struct _SYSTEMTIME //SYSTEMTIME结构体定义。//星期,0为星期日,1为星期一,2为星期二……WORD wMinute。WORD wYear。WORD wHour。原创 2024-03-21 19:26:00 · 1798 阅读 · 0 评论 -
NFS服务软件安装和使用
NFS 分服务器和客户机,当使用远端文件时只要用 mount 命令就可把远端 NFS 服务器上的文件系统挂载在本地文件系统之下,操作远程文件与操作本地文件没有不同。NFS 服务器所共享文件或目录记录在/etc/exports 文件中。嵌入式 Linux 开发中,会经常使用 NFS,目标系统通常作为 NFS 客户机使用,Linux 主机作为 NFS 服务器。在目标系统上通过 NFS,将服务器的 NFS 共享目录挂载到本地,可以直接运行服务器上的文件。在调试系统驱动模块以及应用程序,NFS 都是十分必要的,并且原创 2020-09-19 22:14:43 · 1476 阅读 · 0 评论 -
QT使用数据库
Qt SQL模块里包含了很多个类,可以轻松实现数据库的连接、执行SQL语句,获取数据库里的数据与界面显示等功能,一般数据与界面之间会采用Model/View架构,很方便的显示数据界面和操作数据库。在嵌入式里,存储大量数据,或者记录数据,就需要用到数据库。比如手机的闹钟就使用到了数据库,我们设置的闹钟数据将会保存到数据库里,闹钟程序运行时会从数据库里读取出上次保存的闹钟数据。如果没有数据库,则闹钟程序关机了数据不保存在物理储存设备里,下次运行闹钟时就没有上次设置的闹钟数据,这显然是不合理的。原创 2024-03-30 15:12:33 · 1006 阅读 · 0 评论 -
内存块与内存池
(4)如果从现有的内存块中找不到一个自由的内存分配单元(当第1次请求内存,以及现有的所有内存块中的所有内存分配单元都已经被分配时会发生这种情形),MemoryPool就会从进程堆中申请一个内存块(这个内存块包括一个MemoryBlock结构体,及紧邻其后的多个内存分配单元,假设内存分配单元的个数为n,n可以取值MemoryPool中的nInitSize或者nGrowSize),申请完后,并不会立刻将其中的一个分配单元分配出去,而是需要首先初始化这个内存块。相反,它只维护没有分配的自由分配单元的信息。原创 2020-12-20 13:32:09 · 9762 阅读 · 1 评论
分享