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



一 
QT的内存管理

1
 QT中的内存管理是QObject来管理的

2
 QT中的内存管理没有cocos2dx中的引用计数


组件可以指定父对象

QTimer *timer = QTimer(this);  
//这里的this实际上强制转换成为了QObject了。


每一个对象都有一个deleteLater()方法,

QLineEdit* edit = new QLineEdit(this);

delete edit;  
//这里的delete马上调用析构函数对内存进行释放

Edit->deleteLater();  
deleteLater不是马上释放的,而是发送了一个消息,缓一下,等下一个消息来的时候释放,这种方式是延时释放。

二 
QT中制作动态库


新建一个库项目

项目目录结构如下:

编写代码


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下查看:


添加一个空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();
}

运行结果:

三 
编写一个静态库

创建项目:

一直点击,直到完成。

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

时间: 2024-08-11 04:33:08

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

Cocos2d-x开发中C++内存管理

由于开始并没有介绍C++语言,C++的内存管理当然也没进行任何的说明,为了掌握Cocos2d-x中的内存管理机制,是有必要先了解一些C++内存管理的知识.C++内存管理非常复杂,如果完全地系统地介绍可能需要一本书的篇幅才能解释清楚.这里只给大家介绍C++内存管理最为基本的用法. 内存分配区域创建对象需要两个步骤:第一步,为对象分配内存,第二步,调用构造函数初始化内存.在第一步中对象分配内存时候,我们可以选择几个不同的分配区域,这几个区域如下:栈区域分配.栈内存分配运算内置于处理器的指令集中,效率

cocos2dx中的内存管理机制及引用计数

1.内存管理的两大策略: 谁申请,谁释放原则(类似于,谁污染了内存,最后由谁来清理内存)--------->适用于过程性函数 引用计数原则(创建时,引用数为1,每引用一次,计数加1,调用结束时,引用计数减1,当引用计数为0时,才会真正释放内存) --------->适用于注册性函数(消息处理,中断等场合) 2.cocos2dx中的内存管理采用引用计数和内存托管的原则 spr->retainCount();//获取对象的引用计数值 spr->retain();//引用计数加1 spr

关于OC中得内存管理问题,alloc,retain,release,copy,dealloc

我们都知道,一个手机,它的内存是有限的,而每一个手机应用都是需要一定空间,当应用所占空间过大时,系统就会发出警告,怎样在有限的空间中,做到更高效实用美观的效果呢? 这时候就牵涉到OC中得内存管理了. 在OC这门语言中,是不存在垃圾回收机制的,但是它采用了另外一种形式或者说方法,实现这一个空间回收的效果,那就是引用计数器. 别看-引用计数器,这个名字很高大上,实际是它就是一个整数. 所以OC中分配4个字节才存储它. 引用计数的值只有两种:0和非0,我们知道,计算机其实是很笨的,结果只有这两种时,它

Unity游戏开发中的内存管理_资料

内存是手游的硬伤——Unity游戏Mono内存管理及泄漏http://wetest.qq.com/lab/view/135.html 深入浅出再谈Unity内存泄漏http://wetest.qq.com/lab/view/150.html 这一次,我优化了37%的内存http://wetest.qq.com/lab/view/147.html Unity项目资源加载与管理http://wetest.qq.com/lab/view/124.html Android应用内存泄露分析.改善经验总结h

C++中的内存管理

在C++中也是少不了对内存的管理,在C++中只要有new的地方,在写代码的时候都要想着delete. new分配的时堆内存,在函数结束的时候不会自动释放,如果不delete我分配的堆内存,则会造成内存泄露.所以我们要学会内存管理,不要内存泄露.在C++中的内存管理机制和OC中的还不太一样,在OC中的ARC机制会给程序员的内存管理省不少事,但在C++中没有ARC所以我们要自己管理好自己开辟的内存.Java中也有自己相应的内存管理机制,比如JDBC里的获取的各种资源在finally里进行close等

cocos2d-x中的内存管理机制

cocos2d-x中的内存管理机制    Object *obj = new Object();        obj->autorelease();//自动释放资源        //    {    //        //在这段中使用obj    //    obj->retain();//保留对象    //    obj->release();//手动释放资源    //    //    }            log("Count %d",obj-&g

YJX_Driver_033_驱动中的内存管理

1. 驱动中的内存管理 A. 物理内存 B. 虚拟内存 C. Ring0地址和Ring3地址 D. 驱动程序和进程的关系 E. 分页和非分页内存 F. 分配内核内存 [120]了解两个概念:物理内存  虚拟内存 [140]以下概念针对 32位Windows操作系统(32位及以上的CPU)(32位 / 64位 CPU) [210]64位下的这些概念 略有区别 [240] “ A.物理内存:(Physical Memory Address) 目前主流的操作系统还是32位的XP,而32位的系统提供的寻

Android中的内存管理机制以及正确的使用方式

概述 从操作系统的角度来说,内存就是一块数据存储区域,属于可被操作系统调度的资源.现代多任务(进程)的操作系统中,内存管理尤为重要,操作系统需要为每一个进程合理的分配内存资源,所以可以从两方面来理解操作系统的内存管理机制. 第一:分配机制.为每一个进程分配一个合理的内存大小,保证每一个进程能够正常的运行,不至于内存不够使用或者每个进程占用太多的内存. 第二:回收机制.在系统内存不足打的时候,需要有一个合理的回收再分配的机制,以保证新的进程可以正常运行.回收的时候就要杀死那些正在占有内存的进程,操

iOS学习第四天杂记--Objective-C中的内存管理

先说明下,原文为青玉伏案写的.我这只是学习而已. OC中的内存管理. OC中使用引用计数和垃圾回收来管理内存,在OC中为每个对象分配一个引用计数器,当对象刚刚被创建时其初始值为1,当有某段代码需要访问一个对象时,会将该对象的引用计数器加1(通过retain来实现):当访问一个对象结束时,会将该对象的引用计数器减1(通过release来实现):当计数器为0时,该对象占用的内存空间会被收回.在NSObject类有一个retainCount方法,调用该方法可获取当前对象的引用计数值. Tips:测试时