6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作
一 QT的内存管理
1 QT中的内存管理是QObject来管理的
2 QT中的内存管理没有cocos2dx中的引用计数
3 组件可以指定父对象
QTimer *timer = QTimer(this); //这里的this实际上强制转换成为了QObject了。
4 每一个对象都有一个deleteLater()方法,
QLineEdit* edit = new QLineEdit(this);
delete edit; //这里的delete马上调用析构函数对内存进行释放
Edit->deleteLater(); deleteLater不是马上释放的,而是发送了一个消息,缓一下,等下一个消息来的时候释放,这种方式是延时释放。
二 QT中制作动态库
A 新建一个库项目
项目目录结构如下:
编写代码
t14library_global.h |
#ifndef T14LIBRARY_GLOBAL_H #define T14LIBRARY_GLOBAL_H #include <QtCore/qglobal.h> #if defined(T14LIBRARY_LIBRARY) # define T14LIBRARYSHARED_EXPORT Q_DECL_EXPORT #else # define T14LIBRARYSHARED_EXPORT Q_DECL_IMPORT #endif #endif // T14LIBRARY_GLOBAL_H |
T14Library.h |
#ifndef T14LIBRARY_H #define T14LIBRARY_H #include "t14library_global.h" /*这里的T14LIBRARYSHARED_EXPORT就是用来做跨平台的一个宏*/ class T14LIBRARYSHARED_EXPORT T14Library { public: T14Library(); //自己编写的函数 void Encrypt(); }; #endif // T14LIBRARY_H |
T14Library.cpp |
#include "T14Library.h" #include <QDebug> T14Library::T14Library() { } void T14Library::Encrypt() { qDebug() << "Encrypt"; } |
点击构建按钮: 到项目目录E:\QT\build-T14Library-Desktop_Qt_5_3_MinGW_32bit-Debug\debug下查看: |
B 添加一个空QT项目来使用QT
编写的代码如下:
T15UseLibrary.pro |
SOURCES += \ main.cpp #如果QT mingw版本,使用动态库方式和Linux没区别(-L,-l) #如果QT VS版本。。。使用动态库方式和windows没区别 #如果QT mingw版本,要调用VC写的动态库,使用一个工具,生成libXXXXXX.文件 # 注意-L后面是dll所在的文件夹路径,-l后面表示的是动态库的名字 LIBS += -LE:\QT\build-T14Library-Desktop_Qt_5_3_MinGW_32bit-Debug\debug -lT14Library |
main.cpp |
#include <QCoreApplication> #include "../T14Library/T14Library.h" int main(int argc,char *argv[]) { QCoreApplication app(argc,argv); T14Library d; d.Encrypt(); app.exec(); } |
运行结果: |
三 编写一个静态库
创建项目:
一直点击,直到完成。
这里的静态库就如同是一个普通的项目
6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作相关推荐
- 【精华】详解Qt中的内存管理机制
前言 内存管理,是对软件中内存资源的分配与释放进行有效管理的方法和理论. 众所周知,内存管理是软件开发的一个重要的内容.软件规模越大,内存管理可能出现的问题越多.如果像C语言一样手动地管理内存,一会给 ...
- C++中运行一个程序的内存分配情况及qt中的内存管理机制
一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆区(heap) - 一 ...
- 形式参数内存在哪java_深入浅出Java中JVM内存管理
原标题:深入浅出Java中JVM内存管理 Java岗位面试,JVM是对程序员基本功考察,通常会问你对JVM了解吗?可以分几部分回答这个问题,首先JVM内存划分 | JVM垃圾回收的含义 | 有哪些GC ...
- JNI中的内存管理(转)
源:JNI中的内存管理 JNI 编程简介 JNI,Java Native Interface,是 native code 的编程接口.JNI 使 Java 代码程序可以与 native code 交互 ...
- 深度学习中的内存管理问题研究综述
点击上方蓝字关注我们 深度学习中的内存管理问题研究综述 马玮良1,2, 彭轩1,2, 熊倩1,2, 石宣化1,2, 金海1,2 1 华中科技大学计算机科学与技术学院,湖北 武汉 430074 2 华中 ...
- 分布式存储开发:Curve中的内存管理
前言 Curve 实践过程中遇到过几次内存相关的问题,与操作系统内存管理相关的是以下两次: chunkserver 上内存无法释放 mds 出现内存缓慢增长的现象 内存问题在开发阶段大多很难发现,测试 ...
- JVM基础 之Java HotSpot虚拟机中的内存管理
1 简介 依托JavaTM 2平台的力量,标准版(J2SETM)实现了内存的自动管理,将开发人员从复杂的显式内存管理中解放出来. 本文将对Sun公司的J2SE发行版中的Java HotSpot虚拟机 ...
- python中画糖葫芦的代码_Python中的内存管理
内存管理 包括: ①变量无须事先声明,变量无须指定类型 ②引用计数 ③垃圾回收 ④内存池机制 ①变量定义 不用事先声明变量类型而直接对变量进行赋值.对Python语言来讲,对象的类型和内存都是在运行时 ...
- Swift 中的内存管理详解
这篇文章是在阅读<The Swift Programming Language>Automatic Reference Counting(ARC,自动引用计数)一章时做的一些笔记,同时参考 ...
最新文章
- 贵港职称计算机,2015广西职称计算机考试报名:贵港职称计算机报名入口
- :link,:visited,:focus,:hover,:active详解
- 1、leetcode704 二分查找*
- 多智能系统的第一个小视频
- python 保存本地乱码_请教大神,如何解决保存后的文件的乱码问题
- neo4j在linux下的安装
- linux平滑升级nginx,Nginx的平滑重启和平滑升级,nginx
- Xamarin中国峰会2019
- 【gRPC基础知识】快速部署
- WTA (winner-take-all) 与 自组织映射 SOM (self organizing map)的理解
- tensorflow官方中文文档(各种tf函数解释,看这一篇就够了)
- python账户密码_python02 用户名密码
- CPU负载均衡之EAS
- 软件详细设计文档模板
- 利用Proteus 8.9运行stm32最简单的跑马灯程序
- Dilated Convolutions 空洞卷积
- 2022年计算机二级Access数据库程序设计复习题及答案
- Java音频格式转换,支持amr、aud、slk、silk转成mp3
- linux下FFmpeg编译和解决nasm/yasm not found or too old错误
- rtk采点后如何导入cad_CAD图片导入:如何对JPG图片进行描图
热门文章
- Django框架(25.Django中的模板继承以及HTML转义)
- 深度学习-机器学习(5.2支持向量机SVM)
- 神经网络的梯度消失和过拟合产生原因及其解决方案
- boost::prev_permutation相关的测试程序
- boost::hana::prefix用法的测试程序
- boost::graph::distributed::distributed_queue用法的测试程序
- boost::incremental_components用法的测试程序
- boost::coroutine模块实现不对称链的测试程序
- boost::contract模块实现customer and manager的测试程序
- Boost:传输文件的测试程序