Мне нужно передать несколько аргументов функции, которую я бы хотел вызвать в отдельном потоке. Я read, что типичный способ сделать это - определить структуру, передать функцию указателю на это и разыменовать ее для аргументы. Однако я не могу заставить это работать:
#include <stdio.h>
#include <pthread.h>
struct arg_struct {
    int arg1;
    int arg2;
};
void *print_the_arguments(void *arguments)
{
    struct arg_struct *args = (struct arg_struct *)args;
    printf("%d\n", args -> arg1);
    printf("%d\n", args -> arg2);
    pthread_exit(NULL);
    return NULL;
}
int main()
{
    pthread_t some_thread;
    struct arg_struct args;
    args.arg1 = 5;
    args.arg2 = 7;
    if (pthread_create(&some_thread, NULL, &print_the_arguments, (void *)&args) != 0) {
        printf("Uh-oh!\n");
        return -1;
    }
    return pthread_join(some_thread, NULL); /* Wait until thread is finished */
}
Выход для этого должен быть:
5
7
Но когда я его запускаю, я получаю:
141921115
-1947974263
Кто-нибудь знает, что я делаю неправильно?