Я работаю над программой Windows, которая выполняет тяжелую работу в потоках, а графический интерфейс остается в основном цикле (в этом случае я использую ImGui OpenGL3)
, но с реализацией большего количества функций параметрывыход из области видимости при запуске work_thread и функция, запущенная beginthread, получает указатель, показывающий NULL (на самом деле не изменение кода, а включение другой библиотеки провоцирует, что это происходит)
что происходит и как это предотвратить
здесь - грубое представление моего кода
#include <process.h>
class JOBS
{
public:
void jobA(char *path);
};
void JOBS::jobA(char*path) { . . }
class APP_DATA
{
public:
JOBS jobs;
public:
char *path;
};
void job_a_threadstarter(void* pParams )
{
APP_DATA *app=*(APP_DATA **) pParams;
app->jobs.jobA(app->path);
}
void job_starter(APP_DATA *app)
{
_beginthread(job_a_threadstarter,0,&app);
}
int main(int, char**)
{
APP_DATA app;
char workpath[99]="path_to_somewhere";
.
.
app.path=workpath;
job_starter(&app);
.
.
}
, как правило, код выполняется без проблем, но некоторые изменения в других подпрограммах и job_a_threadstarter дают сбой, поскольку pParams ссылается на NULL
Я использую GNU G ++ с mingw на x64 Windows, компилирую с переключателем c ++ 11 и связываю с -mwindows