调试断言失败:_CrtIsValidHeapPointer(pUserData)C++; 我是C++初学者,我尝试编写一个程序,它随机地从我最喜欢的连续剧中随机生成一个片段,或者绝对随机,但是当我调试它时,这个错误总是出现。
代码还可以,如果它不在Win32 Form应用程序中,它就可以工作 你能帮帮我吗 列表项的我的代码:调试断言失败:_CrtIsValidHeapPointer(pUserData)C++; 我是C++初学者,我尝试编写一个程序,它随机地从我最喜欢的连续剧中随机生成一个片段,或者绝对随机,但是当我调试它时,这个错误总是出现。,c++,debugging,random,assertion,C++,Debugging,Random,Assertion,代码还可以,如果它不在Win32 Form应用程序中,它就可以工作 你能帮帮我吗 列表项的我的代码: Void pro::Form1::keres(string sori) { int k=0; vector<string> a; srand (time(NULL)); string desti = "d:\\Filmek\\Sorozatok\\" + sori + "\\*"; WIN32_FIND_DATA search_data; int s; memset(&
Void pro::Form1::keres(string sori) {
int k=0;
vector<string> a;
srand (time(NULL));
string desti = "d:\\Filmek\\Sorozatok\\" + sori + "\\*";
WIN32_FIND_DATA search_data;
int s;
memset(&search_data, 0, sizeof(WIN32_FIND_DATA));
HANDLE handle = FindFirstFile(desti.c_str(), &search_data);
while(handle != INVALID_HANDLE_VALUE)
{
a.push_back(search_data.cFileName);
k++;
if(FindNextFile(handle, &search_data) == FALSE)
break;
}
s = rand() % (k-2);
cout<<a[s+2]<<endl;
desti = "d:\\Filmek\\Sorozatok\\" + sori + "\\" + a[s+2] + "\\*";
handle = FindFirstFile(desti.c_str(), &search_data);
k = 0;
while(handle != INVALID_HANDLE_VALUE)
{
a.push_back(search_data.cFileName);
k++;
if(FindNextFile(handle, &search_data) == FALSE)
break;
}
s = rand() % (k-2);
string run = "cd " + desti + " & start " + a[s+2];
system(run.c_str());
a.clear();
}
Void pro::Form1::kereses(string film) {
int q=0;
int w=0;
int e=0;
int a;
int s;
int d;
vector<string> y;
vector<string> x;
vector<string> v;
srand (time(NULL));
string desti = "d:\\Filmek\\" + film + "\\*";
WIN32_FIND_DATA search_data;
memset(&search_data, 0, sizeof(WIN32_FIND_DATA));
HANDLE handle = FindFirstFile(desti.c_str(), &search_data);
while(handle != INVALID_HANDLE_VALUE)
{
y.push_back(search_data.cFileName);
q++;
if(FindNextFile(handle, &search_data) == FALSE)
break;
}
a = rand() % (q-2);
desti = "d:\\Filmek\\" + film +"\\" + y[a+2] + "\\*";
handle = FindFirstFile(desti.c_str(), &search_data);
y.clear();
q = 0;
while(handle != INVALID_HANDLE_VALUE)
{
x.push_back(search_data.cFileName);
w++;
if(FindNextFile(handle, &search_data) == FALSE)
break;
}
s = rand() % (w-2);
desti = "d:\\Filmek\\" + film +"\\" + y[a+2] + "\\" + x[s+2] + "\\*";
handle = FindFirstFile(desti.c_str(), &search_data);
x.clear();
w = 0;
while(handle != INVALID_HANDLE_VALUE)
{
v.push_back(search_data.cFileName);
e++;
if(FindNextFile(handle, &search_data) == FALSE)
break;
}
d = rand() % (e-2);
string run = "cd " + desti + " & start " + v[d+2];
system(run.c_str());
v.clear();
e=0;
}
Void pro::Form1::keres(字符串sori){
int k=0;
载体a;
srand(时间(空));
字符串desti=“d:\\Filmek\\Sorozatok\\”+sori+“\\*”;
WIN32查找数据搜索数据;
int-s;
memset(&search_data,0,sizeof(WIN32_FIND_data));
HANDLE HANDLE=FindFirstFile(desti.c_str(),&search_data);
while(句柄!=无效的句柄值)
{
a、 向后推(search\u data.cFileName);
k++;
if(FindNextFile(handle,&search_data)==FALSE)
打破
}
s=rand()%(k-2);
coutFyi,你试图跳过父别名和自别名的逻辑太可怕了。利用WIN32\u FIND\u DATA
的dwFileAttributes
成员,有选择地只将文件名、目录或任何筛选内容下推到容器中..并用关闭搜索句柄,而不是将它们泄漏到以太中。Sorry、 但我对编程非常业余,你能一步一步地写下来吗?