首頁 > 後端開發 > C++ > Boehm 的保守垃圾收集器可以與多執行緒應用程式的 C 標準函式庫整合嗎?

Boehm 的保守垃圾收集器可以與多執行緒應用程式的 C 標準函式庫整合嗎?

Linda Hamilton
發布: 2024-10-26 16:28:30
原創
522 人瀏覽過

Can Boehm's Conservative Garbage Collector Be Integrated with the C   Standard Library for Multi-threaded Applications?

將保守垃圾收集與C 標準庫整合

問題:

問題:

在多個🎜>在多個- 線程C應用程序,Boehm的保守垃圾收集器(GC)能否與C標準庫結合有效利用?具體來說,operator::new 以及 std::vector 和 std::string 提供的分配器應該如何處理?

答:

1。重新定義運算符 ::new:

使用 Boehm GC 重新定義 ::operator new 是沒有必要的。透過正確利用 Boehm 的 GC,可以避免明確地重新定義 ::operator new。

2。標準庫容器的分配器:

  • std::vector:

使用std::vector 並將明確分配器參數設定為Boehm 的gc_allocator。這確保了內部資料結構和各個元素都是 GC 分配的。

  • std::string:
GC 分配內部字元數組,使用從std::basic_string 派生的自訂字串實作並使用gc_allocator。

在標準實作中沒有簡單的方法強制將字元陣列進行 GC_malloc_atomic 分配。

範例:
<code class="cpp">#include <gc/gc_cpp.h>
#include <gc/gc_allocator.h>
#include <vector>

class Myvec {
  std::vector<int, gc_allocator<int>> _vec;
public:
  Myvec(size_t sz = 0) : _vec(sz) {}
  // ... (rest of class implementation)
};</code>
登入後複製

以下程式碼示範了GC 分配向量的自訂實作:

3. g 的相容性:

是的,可以將Boehm GC 與g 編譯的應用程式一起使用。遵循上述指南,有效地將 GC 與標準庫整合。

  • 附錄(2017 年1 月):
檢查提案n2670 和以及垃圾收集支持,以實現C 垃圾收集功能未來潛在的增強。

以上是Boehm 的保守垃圾收集器可以與多執行緒應用程式的 C 標準函式庫整合嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板