class A
{
public:
void Init(char* str,int a);
friend UINT _stdcall Begin(void* p);
char m_str[260];
};
A ga;
按鈕里:
ga.Init("ssss",5);
Sleep(1000);
_beginthreadex(0,0,Begin,(LPVOID)&gA,0,0);
執行緒函式
UINT _stdcall Begin(void* p)
{
A* pa=(A*)p;
char s1[260];
strcpy(s1,pa->m_str); 這個怎么獲取的是" "啊?沒字串呢?
return 0;
}
uj5u.com熱心網友回復:
void A::Init(char* str,int a){
strcpy(m_str,str);
}
uj5u.com熱心網友回復:
#include <process.h>
class A
{
public:
void Init(char* str,int a)
{
strcpy(m_str,str);
}
friend UINT _stdcall Begin(void* p);
char m_str[260];
};
A ga;
UINT _stdcall Begin(void* p)
{
A* pa=(A*)p;
char s1[260];
strcpy(s1,pa->m_str);
AfxMessageBox(s1);
//
return 0;
}
void CAboutDlg::OnButton1()
{
// TODO: Add your control notification handler code here
ga.Init("ssss",5);
// Sleep(1000);
_beginthreadex(0,0,Begin,(LPVOID)&ga,0,0);
}
uj5u.com熱心網友回復:
void Init(char* str,int a) 那個 5 有什么用 ?uj5u.com熱心網友回復:
傳資料啊. 好像程式沒問題.cpu,記憶體爆卡. 執行緒里有個寫資料的,把那個字串的資料給弄沒了.uj5u.com熱心網友回復:
看看你真正的 void Init(char* str,int a)uj5u.com熱心網友回復:
找到原因了....野指標釋放的時候沒p=NULLuj5u.com熱心網友回復:
記憶體溢位....一下午和晚上uj5u.com熱心網友回復:
你帖子上的程式沒有體現這一點啊,哪里需要p=NULL?uj5u.com熱心網友回復:
你這樣傳指標過去如果 A ga是全域的就沒有問題,如果是區域的話,物件可能在你訪問之前就被系統釋放掉了。你訪問的是非法的記憶體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/111031.html
標籤:進程/線程/DLL
上一篇:sqlite3資料庫創建表的問題
下一篇:怎樣自動售賣虛擬產品?
