I'm writing an application in c which uses POSIX pthreads. In each thread there is a function which does malloc
. So my questions are:
1) Am I guaranteed that each thread allocates a different, non-overlapping block of memory?
2) Is there access to the allocated memory from the main thread (which created the other threads that allocate memory)?
I am using gcc compiler on Windows, but I would like to know the answer for both Windows and Linux.
Thanks
malloc()
is thread-safe in that it can be used in multiple threads concurrently. Typically, malloc()
employs internal locking for this purpose.From man malloc
:
+---------------------+---------------+---------+
| Interface | Attribute | Value |
+---------------------+---------------+---------+
| malloc(), free(), | Thread safety | MT-Safe |
| calloc(), realloc() | | |
+---------------------+---------------+---------+
malloc
& friends is thread-safe, so I don't think there's more to say. Since they all conform to C99, this holds true for both Linux and Windows.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With