Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于malloc和free中的线程安全_C_Multithreading_Malloc_Glibc - Fatal编程技术网

关于malloc和free中的线程安全

关于malloc和free中的线程安全,c,multithreading,malloc,glibc,C,Multithreading,Malloc,Glibc,可能重复: 我听说glibc malloc()不是线程安全的,因为同时调用malloc()的进程的多个线程将导致未定义的行为。我的问题是,如果一个线程调用free(),另一个线程调用malloc(),这会导致未定义的行为吗?如果使用-pthreads链接,malloc()在glibc中是线程安全的 否则,链接器不会在线程安全的malloc中链接,这将导致未定义的行为。如果使用-pthreads链接,malloc()在glibc中将是线程安全的 否则,链接器不会链接到线程安全的malloc中,这

可能重复:


我听说glibc malloc()不是线程安全的,因为同时调用malloc()的进程的多个线程将导致未定义的行为。我的问题是,如果一个线程调用free(),另一个线程调用malloc(),这会导致未定义的行为吗?

如果使用-pthreads链接,malloc()在glibc中是线程安全的


否则,链接器不会在线程安全的malloc中链接,这将导致未定义的行为。

如果使用-pthreads链接,malloc()在glibc中将是线程安全的


否则,链接器不会链接到线程安全的malloc中,这将导致未定义的行为。

这实际上取决于您使用的内存分配器,但是,我认为默认情况下,malloc和free是不可重入的,因为它们在静态列表中维护内存块列表

这可能会导致并发症,如果你同时进行malloc'和free

我知道
ptmalloc
,但是,是线程安全的,所以您可以使用它

这些链接也很有用:


这实际上取决于您使用的内存分配器,但是,我认为默认情况下,malloc和free是不可重入的,因为它们在静态列表中维护内存块列表

这可能会导致并发症,如果你同时进行malloc'和free

我知道
ptmalloc
,但是,是线程安全的,所以您可以使用它

这些链接也很有用:


这取决于您的glibc实现。系统上的一个简单的“manmalloc”可能会告诉您。通常,如果您告诉编译器您将使用线程,那么它将链接到c运行时库的线程安全版本,包括线程安全的malloc()。

这取决于您的glibc实现。系统上的一个简单的“manmalloc”可能会告诉您。通常,如果您告诉编译器您将使用线程,那么它将链接到c运行时库的线程安全版本,包括线程安全的malloc()。

相同的问题:相同的问题: