Mình có demo thử cách dùng vector trong việc xử lý mảng ký tự ( TCHAR*)
nhưng có 1 lỗi rất kỳ lạ là Nếu chạy chương trình này 1 lần ( không cho hàm
unsigned __stdcall ThreadString(void* pArguments)
chạy trong vòng lặp While ) thì không có lỗi gì cả,nhưng nếu đặt nó vào vòng lặp while như bên dưới thì lập tức biến std::vector<TCHAR*>veLine; bị <Bad Ptr>
đây là đoạn code lỗi( nếu có vòng lặp while
Mã:
#include <Windows.h>
#include <vector>
#include <tchar.h>
#include <stdio.h>
#include <process.h>
std::vector<TCHAR*>veLine;
#define MAX_FOLDER_PATH 1024
unsigned __stdcall ThreadString(void* pArguments){
int i;
TCHAR szPathFolder[MAX_FOLDER_PATH];
lstrcpy(szPathFolder,_T("C:\\Users\\vcs\\Desktop"));
TCHAR szGetLine[MAX_FOLDER_PATH];
lstrcpy(szGetLine,_T("string 1"));
veLine.push_back(szGetLine);
lstrcpy(szGetLine,_T("string 2"));
veLine.push_back(szGetLine);
lstrcpy(szGetLine,_T("string 3"));
veLine.push_back(szGetLine);
int iSize = veLine.size();
int iReturn;
for ( i =0 ; i< iSize ; i++ ){
iReturn = lstrcmp(veLine[i],szPathFolder);
int ileng = lstrlen(szPathFolder);
int iVleng = lstrlen(veLine[i]);
if (iReturn == 0){
break;
}
}
_endthreadex( 0 );
return 0;
}
int main()
{
unsigned threadID;
while(true){
_beginthreadex(NULL,0,&ThreadString, 0, 0, &threadID);
Sleep(1000);
}
return 0;
}
lỗi sinh ra sau khi chạy được vài giây
đây là đoạn chương trình chạy không có vòng lặp while ( thì chương trình không lỗi )
Mã:
#include <Windows.h>
#include <vector>
#include <tchar.h>
#include <stdio.h>
#include <process.h>
std::vector<TCHAR*>veLine;
#define MAX_FOLDER_PATH 1024
unsigned __stdcall ThreadString(void* pArguments){
int i;
TCHAR szPathFolder[MAX_FOLDER_PATH];
lstrcpy(szPathFolder,_T("C:\\Users\\vcs\\Desktop"));
TCHAR szGetLine[MAX_FOLDER_PATH];
lstrcpy(szGetLine,_T("string 1"));
veLine.push_back(szGetLine);
lstrcpy(szGetLine,_T("string 2"));
veLine.push_back(szGetLine);
lstrcpy(szGetLine,_T("string 3"));
veLine.push_back(szGetLine);
int iSize = veLine.size();
int iReturn;
for ( i =0 ; i< iSize ; i++ ){
iReturn = lstrcmp(veLine[i],szPathFolder);
int ileng = lstrlen(szPathFolder);
int iVleng = lstrlen(veLine[i]);
if (iReturn == 0){
break;
}
}
_endthreadex( 0 );
return 0;
}
int main()
{
unsigned threadID;
/*while(true){*/
_beginthreadex(NULL,0,&ThreadString, 0, 0, &threadID);
//Sleep(1000);
//}
return 0;
}
ai có thể giải thích và sửa giúp mình lỗi ở trên không: đây là code lỗi
View more random threads:
Nhiều nữ giới quan niệm rằng, sự thèm muốn tình dục khi không có chồng là một điều gì đó rất xấu xa và lăn loàn. Thế nhưng, theo các chuyên gia tình dục cho biết, việc phụ nữ có ham muốn và cần giải...
Mang đồ chơi tình dục vào phòng...