我在使用POSIX pthreads的c中编写应用程序。在每个线程中都有一个函数,它的作用是malloc
。所以我的问题是:在线程中执行malloc
1)我保证每个线程分配一个不同的,不重叠的内存块吗?
2)有没有从主线程(创建分配内存的其他线程)访问分配的内存?
我在Windows上使用gcc编译器,但我想知道Windows和Linux的答案。
感谢
我在使用POSIX pthreads的c中编写应用程序。在每个线程中都有一个函数,它的作用是malloc
。所以我的问题是:在线程中执行malloc
1)我保证每个线程分配一个不同的,不重叠的内存块吗?
2)有没有从主线程(创建分配内存的其他线程)访问分配的内存?
我在Windows上使用gcc编译器,但我想知道Windows和Linux的答案。
感谢
从man malloc
:
+---------------------+---------------+---------+
| Interface | Attribute | Value |
+---------------------+---------------+---------+
| malloc(), free(), | Thread safety | MT-Safe |
| calloc(), realloc() | | |
+---------------------+---------------+---------+
malloc
&朋友是线程安全的,所以我不认为还有更多的话要说。由于它们都符合C99,所以Linux和Windows都适用。
malloc()
是线程安全的,因为它可以在多个线程并发使用。通常,malloc()
为此使用内部锁定。
malloc线程安全http://stackoverflow.com/questions/855763/is-malloc-thread-safe。是的,malloc是一个“全局”分配机制,因此每个分配的内存块都可以在整个过程中看到。 –