我在使用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是一個「全局」分配機制,因此每個分配的內存塊都可以在整個過程中看到。 –