@evgenyt2000

Как исправить передачу массива в поток?

В поток передаётся массив (возможно я неправильно его передаю), после в потоке я получаю странные числа хотя операции там не сложные
int *array = new int[mSize];
HANDLE hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)a,&array,0,&tid);

int a(int *array)
{
    min = array[0]; max = array[0];
    for (i = 0; i < mSize; i++) { sum += array[i]; Sleep(12); }
    cout << "Sum   :" << sum << endl;
    for (i = 0; i < mSize; i++){if (min > array[i])  min = array[i];}
    cout << "Min   :" << min << endl;
    return 0;
}

5eb422b94d9e2470759333.png
возможно надо передавать и размер массива, но как это сделать непонятно.
  • Вопрос задан
  • 300 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
int *array = new int[mSize];
...
HANDLE hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)a,&array,0,&tid);
...
int a(int *array)

В вызове CreateThread надо заменить &array на array, потому что переменная array -- не массив, а указатель.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы