我在c中编写了一个使用POSIX pthreads的应用程序。在每个线程中都有一个malloc
函数。所以我的问题是:
1)我保证每个线程分配一个不同的,不重叠的内存块吗?
2)是否可以从主线程(创建分配内存的其他线程)访问分配的内存?
我在Windows上使用gcc编译器,但我想知道Windows和Linux的答案。
由于
答案 0 :(得分:6)
malloc()
线程安全,因为它可以同时在多个线程中使用。通常,malloc()
为此目的使用内部锁定。答案 1 :(得分:3)
来自man malloc
:
+---------------------+---------------+---------+
| Interface | Attribute | Value |
+---------------------+---------------+---------+
| malloc(), free(), | Thread safety | MT-Safe |
| calloc(), realloc() | | |
+---------------------+---------------+---------+
malloc
&朋友是线程安全的,所以我认为还有更多话要说。由于它们都符合C99,因此适用于Linux和Windows。