Ich habe meine Frage bearbeitet. Es scheint, dass Threads anders als erwartet funktionieren (Windows vs. Linux). Dies ist das komplette Arbeitsbeispiel:Wie teile ich Speicher aus dem Hauptprogramm mit einem Thread in Linux
#include <pthread.h>
#include <stdio.h>
#include <string.h>
void *testing(void *mptr)
{
char *mystr;
mystr=(char *)mptr;
printf(mystr);
printf("finished running thread\n");
return NULL;
}
int main()
{
pthread_t mythread;
char *str1;
str1=malloc(50);
strcpy(str1,"Hello World\n");
printf(str1);
printf("About to start\n");
//pthread_create(&mythread, NULL, testing, str1);
printf("finished creating thread\n");
printf(str1);
free(str1);
return 0;
}
Above Programm erzeugt:
Hello world
About to start
finished creating thread
Hello World
Bitte beachten Sie, dass ich nicht einen Thread in es erschaffe - die spezifische Zeile kommentiert werden. Wie auch immer, wenn ich die „pthread_create ..“ nicht kommentieren Sie -Linie der Ausgang sporadisch, manchmal Müll hat:
Hello world
About to start
finished creating thread
Hello World
&%¤&finished creating thread
Manchmal ist die verstümmelte Teil in Ordnung ist, manchmal zeigen sie als „o Welt“ usw. .
Von was ich gegoogelt habe ist, dass Stapel nicht auf die gleiche Weise wie Windows geteilt wird.
Wie kann ich auf Speicher zugreifen, die ich später im Hauptprogramm im Hauptprogramm malloc? Fehle ich etwas?
Können Sie uns zeigen, wo und wie Sie 'somelinkedlist' definieren? – rjp
Abstimmung zum Schließen. [Siehe: So erstellen Sie ein minimales, vollständiges und überprüfbares Beispiel.] (Https://stackoverflow.com/help/mcve). – DevNull
Ich stimme DevNull zu, der Code, den Sie angezeigt haben, ist nicht der Code, der das Problem hat. – user3386109