數組如何在C中作用域?他們什麼時候被毀壞? (注意,也談談,如果他們甚至可以在p_threads傳遞)線程中的數組作用域
1
A
回答
1
他們作用域就像正常的變量:
// in a function
int arrayA[300];
{
float arrayB[100];
// arrayA and arrayB available here
}
// arrayB out of scope, inaccessible.
// arrayA still available.
如果你要通過陣列的功能,這將是有效的只要這個數組仍然在呼叫站點的範圍內。
1
數組的範圍與其他任何基元,結構或聯合一樣。 C中沒有任何東西會被破壞,儘管數組可以超出範圍。
此外,就像其它類型,陣列可在堆上通過調用malloc()
分配足夠的空間來容納元件的所需數量,以及處理所述返回void *
作爲指針的第一個元素分配。這樣的數組將在您致電free()
之前有效。
WRT Pthreads,規則和其他任何類型一樣。如果將數組定義爲自動(函數範圍)變量,則函數返回時它將立即超出範圍;你不能安全地將一個指向這樣的數組的指針傳遞給另一個線程。但是如果你在堆上分配一個數組,那麼你可以在任何地方傳遞一個指向這個數組的指針(包括數組內的任何東西),包括另一個線程。當然,您仍然需要使用適當的同步機制來確保對內容的線程安全訪問。
1
數組與C語言中任何其他命名實體之間的範圍和生命週期規則完全沒有區別。即當涉及範圍和生命週期時,數組並不是什麼特殊的。他們的行爲就像普通的int
變量一樣。
相關問題
- 1. Cuda單線程作用域變量
- 2. 從設置線程組(jmeter)獲取線程組中的線程數
- 3. 檢查數組的作用域
- 4. 工作臺中的JMeter線程組
- 5. 函數作用域內部和外部數組之間的作用域泄漏?
- 6. 使用Python中的多線程鎖定機制作爲全局/類作用域
- 7. 在streamreader中使用'block'創建的c#數組的作用域
- 8. C#線程數組
- 9. 多線程MVVM應用程序中的隱式作用域上下文
- 10. 將API傳遞給作用域數組?
- 11. Angularjs將數組推送到作用域
- 12. 節點數組作用域問題
- 13. 在Tcl中訪問Itcl類作用域線程
- 14. 在Rails模型作用域定義中使用數組函數
- 15. 如何從一個子組件作用域中訪問父組件作用域?
- 16. 線程中的全局數組
- 17. C++中的線程數組Boost
- 18. D中數組的線程安全性?
- 19. Python中數組的多線程求和
- 20. 數組中的線程安全容器
- 21. posix pthread在單獨線程中的數組元素上工作
- 22. 多線程和分配數組到c中的每個線程#
- 23. 會話作用域bean工作在會話線程之外
- 24. Spring:從Web應用程序線程訪問請求(會話)作用域Bean線程(來自線程池)
- 25. 來自工作線程的ATL示例調用(編組)從工作線程的公寓線程COM接口
- 26. Boost線程的boost :: unique_lock作用域鎖嗎?
- 27. PHP多線程變量的作用域股發行
- 28. 從數組數組中找到斯卡拉曲線下的(集成)區域
- 29. 線程「主」java.lang.ArrayIndexOutOfBoundsException異常,數組數組
- 30. 刷新angular.js中的作用域數組項目
我認爲你的意思是Pthreads或POSIX線程。 – 2011-02-11 11:53:46