6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作

简介:  一  QT的内存管理 1  QT中的内存管理是QObject来管理的 2  QT中的内存管理没有cocos2dx中的引用计数 3  组件可以指定父对象 QTimer *timer = QTimer(this);   //这里的this实际上强制转换成为了QObject了。 4  每一个对象都有一个deleteLater()方法,


  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();
}

运行结果:

 

  编写一个静态库

创建项目:

一直点击,直到完成。

这里的静态库就如同是一个普通的项目

 

目录
相关文章
|
8月前
|
程序员 C语言
C语言库函数 — 内存函数(含模拟实现内存函数)
C语言库函数 — 内存函数(含模拟实现内存函数)
108 0
|
6月前
|
Linux iOS开发 开发者
Qt问题(二):无法定位程序输入点于动态链接库
动态链接库(Dynamic Link Library,简称DLL)是一种可执行文件格式,常见于Windows操作系统中,而在Linux和macOS等其他操作系统中,相似的概念通常被称为共享库(Shared Library)。动态链接库允许程序在运行时加载所需的代码和数据,而不是在编译时静态链接到应用程序中。这种方式带来了几个重要的优点:
545 3
|
8月前
|
存储 算法 C语言
C库函数详解 - 内存操作函数:memcpy()、memmove()、memset()、memcmp() (一)
`memcpy()` 和 `memmove()` 是C语言中的两个内存操作函数。 `memcpy()` 函数用于从源内存区域复制指定数量的字节到目标内存区域。它不处理内存重叠的情况,如果源和目标区域有重叠,结果是未定义的。函数原型如下: ```c void *memcpy(void *dest, const void *src, size_t num); ```
289 6
|
4月前
|
C语言 Android开发 C++
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
本文介绍了使用MTuner软件进行Qt MinGW编译程序的内存泄漏检测的方法,提供了MTuner的下载链接和测试代码示例,并通过将Debug程序拖入MTuner来定位内存泄漏问题。
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
|
3月前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
4月前
|
安全 C++
超级好用的C++实用库之环形内存池
超级好用的C++实用库之环形内存池
83 5
|
4月前
|
C++
超级好用的C++实用库之动态内存池
超级好用的C++实用库之动态内存池
46 0
|
6月前
|
Oracle 关系型数据库 Linux
讲解linux下的Qt如何编译oracle的驱动库libqsqloci.so
通过这一连串的步骤,可以专业且有效地在Linux下为Qt编译Oracle驱动库 `libqsqloci.so`,使得Qt应用能够通过OCI与Oracle数据库进行交互。这些步骤适用于具备一定Linux和Qt经验的开发者,并且能够为需要使用Qt开发数据库应用的专业人士提供指导。
199 1
讲解linux下的Qt如何编译oracle的驱动库libqsqloci.so
|
5月前
|
API 开发工具 C语言
C语言与图形界面:利用GTK+、Qt等库创建GUI应用。
C语言与图形界面:利用GTK+、Qt等库创建GUI应用。
325 0
|
7月前
|
存储 编解码 Ubuntu
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
【QT】linux下alsa库的移植和QT中音视频的处理&笔记