当前位置: 首页 > news >正文

昌江网站建设厦门人才网手机版

昌江网站建设,厦门人才网手机版,国外优秀企业网站模板,廊坊网站建设电话在子线程中的一个槽函数,当读取到dxf文件完成后,结果通过在该槽函数中的 dx_data* pDxfData 指针变量读取。 然后通过QVariant封装该指针变量。发送到主线程中。 void qcWorker::slotReadDxfFile(QString dir) {bool bRtn{ false }; //定义一个局部指针…

在子线程中的一个槽函数,当读取到dxf文件完成后,结果通过在该槽函数中的 dx_data* pDxfData

指针变量读取。 然后通过QVariant封装该指针变量。发送到主线程中。

void qcWorker::slotReadDxfFile(QString dir)
{bool bRtn{ false };
//定义一个局部指针变量dx_data* pDxfData = new dx_data;bRtn=m_DxfRW->fileImport(static_cast<const std::string>(dir.toStdString()), pDxfData);emit signalReadDxfFileRes(bRtn, QVariant::fromValue((void*)pDxfData));
//在此不进行delete pDxfData 操作
}

主线程中的槽函数

//根据返回的图元数据显示到界面
void qwaGrindProcessFive::slotReadDxfFileRes(bool bSts,QVariant var)
{if (!bSts){//读取dxf错误}else{//定义一个全局指针变量dx_data* m_pDxfData m_pDxfData = (dx_data*)var.value<void*>();qDebug() << "m_pDxfData:" << m_pDxfData;//只在下次获取dxf文件数据时,进行delete m_pDxfData 操作}
}
connect(m_Worker, &qcWorker::signalReadDxfFileRes,this, &qwaGrindProcessFive::slotReadDxfFileRes);//,Qt::DirectConnection);
//不用采用Qt::DirectConnection的方式,也能获取到数据,因为数据一直存在

在主线程中将对应指针转换为dx_data对象指针。

可以通过简单分析dx_data* pDxfData指针变量所指dx_data对象的生命周期是一直存在的,直至出现delete m_pDxfData 指令,才会释放dx_data对象所占内存。

分析要点:

1.局部变量是在栈中创建,当对应函数执行完成后,对应局部变量的内存就会电脑自动回收(通过汇编指令可以看出,其实就是会自动执行delete 操作)。

2.在局部变量中new出来的对象,将在堆中创建。所以dx_data* pDxfData该指针变量是在栈上,而其所指的地址是在堆上创建。这个堆的地址大小就是dx_data对象大小。所以这里也区分指针变量及指针变量所指对象。指针变量是在栈上,只存储了dx_data对象在堆上的首地址而已,真正的数据是在堆上。在堆上创建的对象,只能通过delete人工释放对应堆上的内存。

3.当槽函数与信号通过自动模式连接时,对应槽在各自线程中运行。当采用Qt::DirectConnection方式连接时,即使在不同线程中,也会在信号发送完成后立即执行对应槽函数,直至完成。

4.当在函数中定义一个局部指针变量时,该指针变量也是遵循序号1,2的规则,在函数执行完成后,也将释放指针变量的内存(注意是指针变量的内存,而不是指针变量所指内存位置即dx_data对象所占内存),但是在函数执行完成前,已经将该指针变量存储的地址发送到主线程的槽函数中了。当槽函数执行时,也就仍然能读取到在子线程函数中创建的dx_data对象堆中的数据。

5.而在主函数中将收到的指针赋值给一个全局变量中,全局变量是在静态区创建的,其生命周期将一直存在。通过将指针赋值给全局变量的方式,也就将在子程序中的局部变量变成了一个全局变量了。这也是指针的魅力。也是容易让人头昏的存在。特此记录,以供参考。

6.之所以不采用Qt::DirectConnection的方式也能获取到数据,真是因为这个指针的存在。保证了数据的生命周期一直存在。整个过程就相当于将指针做了转移。从一个局部变量转移到了一个全局变量中。这也是为什么没有在子函数中执行delete的原因。一旦执行delete则dx_data对象的内存将释放,在主线程中的槽函数将读取到一个空的数据。

http://www.tj-hxxt.cn/news/23839.html

相关文章:

  • 哈尔滨seo优化专注如何seo网站推广
  • 深圳网站快速备案广州seo顾问
  • 网站排名不可有利就前win7怎么优化最流畅
  • 城市分类信息网站建设seo网站优化流程
  • 用php做网站要多久西部数码域名注册官网
  • 建网站推广优化seo
  • 健身网站开发项目总结北京seo推广公司
  • 如何让网站火起来网络营销专业课程
  • 网站推广 教程sem优化师
  • 怎样做淘宝的导购网站推广百度客服人工
  • html5 手机网站 图标外包公司是什么意思
  • 网站开发不让搜索引擎企业品牌推广策划方案
  • 旅游网页设计模板代码下载湖南优化公司
  • 宁夏建设监督网站个人网页制作成品
  • 做外贸 用国内空间做网站网站流量分析工具
  • 网站建设总体方案设计国家大事新闻近三天
  • 政务门户网站建设方案手机网站搜索优化
  • 政府网站建设 问题营销渠道策划方案
  • 专业微网站建设公司首选公司哪家好杭州百度代理公司
  • 电子商务网站建设的概要设计百度信息流怎么收费
  • 滕州网站建设招聘最佳的搜索引擎
  • 有回定ip怎么做网站免费职业技能培训网站
  • java网站开发岗位职责seo网络优化是做什么的
  • 做网站一个月能挣多少钱网络软文营销案例3篇
  • 做网站用asp好吗营销策划公司
  • 北京市专业网站建设自己开一个培训机构流程
  • 房地产营销策划方案西安关键词优化排名
  • 原平的旅游网站怎么做的百度指数分析数据
  • 如何对网站做优化成都网站seo收费标准
  • 常州专业网站建设公司咨询搜索引擎优化的简称