在线程内部使用malloc变量

use*_*809 2 c linux pthreads

我有一个关于pthread的问题,当我在一个带有malloc的线程中创建一个变量然后将它的指针传递给一个共享结构,即fifo时,线程1传递的指针是否会被thread2访问?

请注意,我必须编写上述问题的代码,我只是想更好地理解线程,下面就是我正在考虑的问题.环境是pthread,clinux

据我所知,线程正在共享其父进程的内存,如果是这种情况,则下面的内容应该是正确的.

void *thread-1(void *pointer)
{
  int *intp = malloc(4);
  send_to_fifo(intp);
}


void *thread-2(void *pointer)
{
  int *iptr;
  iptr = read_from_fifo();
  do_something(iptr);
  free(iptr);
}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 6

线程1传递的指针是否会被thread2访问?

是的:由于所有线程都在公共存储空间中运行,因此允许这样做.

malloc,free和其他内存管理函数默认是线程安全的,除非使用编译NO_THREADS.