我注意到当我使用函数GetOpenFileName
时,在我的应用程序中分配了很多线程。关闭对话框并返回函数后,如何删除它们?我在这些线程中也遇到SIGSEGV
错误,这些错误不会导致我的应用程序崩溃但仍然很烦人,因为它们无处可能会导致严重的内存问题,并且win32 api不应该像这样有缺陷,如果它?我做错了吗?
我也是c / c ++的初学者,所以请不要对我太过刻意。
我的代码:
OPENFILENAME open;
ZeroMemory(&open, sizeof(open));
char szFileName[2048] = {};
open.lStructSize = sizeof(OPENFILENAME);
open.hwndOwner = NULL;
open.lpstrFilter = "Képek\0*.jpg;*.jpeg;*.gif;*.png;*.bmp\0\0";
open.lpstrFile = szFileName;
open.nFileOffset = 1;
open.nMaxFile = 2048;
open.lpstrTitle = "Képek kiválasztása..";
open.Flags = OFN_EXPLORER | OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST;
std::string links = "";
if (GetOpenFileName(&open)) {
...
}
答案 0 :(得分:2)
关于这些线程你无能为力。该对话框确实创建了一些由操作系统本身管理的工作线程,并且还可能安装了第三方资源管理器插件,这些插件也可以通过对话框使用资源管理器间接加载,并创建自己的线程。只要对话框没有崩溃您的代码,只需忽略额外的线程。它们是与您的应用无关的操作系统层线程。