亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當我把該變量變為線程里的局部變量時就不會內存泄露了,但是在我的主線程中又獲取不到查詢結果了?

當我把該變量變為線程里的局部變量時就不會內存泄露了,但是在我的主線程中又獲取不到查詢結果了?

C++
ABOUTYOU 2023-03-03 14:10:26
子線程負責查詢數據庫,獲取結果。主線程根據查詢結果刷新listcontrol列表。我開始定義了一個全局變量(而非類成員變量)用來保存查詢的結果,當我程序退出后提示有內存泄露。#include A.hvector<type> m_result; //record_datas_struct:自定義結構體保存查詢結果,結構體中使用了vectorvoid A::Query() //查詢函數中調用線程{A obj;boost::thread thrd(boost::bind(&A::ThreadQurey,&obj,m_condition)); //m_condition:查詢條件}LRESULT A::ListItemRefresh(WPARAM wParam, LPARAM lParam) //消息響應函數{刷新ListControl}void A::ThreadQuery(const vector<condition> &vec_condition) //condition:自定義結構體 線程函數{/*執行查詢*/::PostMessage(hwnd,WM_QUERY_END_MSG,0,0); //查詢結束拋消息,上面的ListItemRefresh會響應}我將ListControl的指針傳進去解決了這個問題,不需要全局變量。但是我還是求高手詳細的講講線程中對全局變量的看法
查看完整描述

1 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

全局變量和你傳進線程的變量,類似。都是需要用線程鎖來進行同步訪問的。
全局變量用到線程里,以前是為了方便,不需要每次將變量傳進函數里。因為CreateThread太麻煩,只能傳進一個指針。現在用Boost就比較方便,可以傳進多個參數。

查看完整回答
反對 回復 2023-03-06
  • 1 回答
  • 0 關注
  • 122 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號