C 在linux中,如何与线程共享主程序的内存

C 在linux中,如何与线程共享主程序的内存,c,linux,memory,pthreads,share,C,Linux,Memory,Pthreads,Share,我已经编辑了我的问题。线程的运行方式似乎与我预期的不同(windows与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"); ret

我已经编辑了我的问题。线程的运行方式似乎与我预期的不同(windows与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;
}
请注意,我没有在其中创建线程-特定的行被注释掉了。 然而,如果我不注释掉“pthread_create..”行,则输出是零星的,有时是垃圾:

Hello world
About to start
finished creating thread
Hello World
&%¤&finished creating thread
有时,乱码的部分是好的,有时它显示为“o世界”等

我在谷歌上搜索到的是,堆栈的共享方式与Windows不同


如何访问线程中稍后在主程序中调用的内存?我遗漏了什么吗?

也许您应该等待线程完成,然后再释放字符串


pthread\u join是你在这里的朋友。

我解决了我的问题。可能是因为记忆受到了重创。 然而,那些阅读我最初问题的人不喜欢我没有发布完整的消息来源,我得到了-3票的反对票

然后我编辑了我的原始问题,以提供一个完整的测试源

不幸的是,那些最初否决我的人还没有检查我是否修正了我的问题

现在,否决票禁止我在Stackoverflow上输入新问题。我现在从两个“糟糕”的问题中总共得到了-6张反对票。
因此,请:那些否决票的人:请取消否决票。

您能告诉我们您在哪里以及如何定义
somelinkedlist
?投票结束。我同意DevNull的观点,您显示的代码不是有问题的代码。
Hello world
About to start
finished creating thread
Hello World
&%¤&finished creating thread