首頁 > 後端開發 > C++ > 為什麼我不能在 C 結構中將 Malloc 與 std::strings 一起使用?

為什麼我不能在 C 結構中將 Malloc 與 std::strings 一起使用?

Linda Hamilton
發布: 2024-11-18 19:46:02
原創
913 人瀏覽過

Why Can't I Use Malloc with std::strings in C   Structures?

在C 結構中使用Malloc 和std::Strings

您在嘗試使用包含std:: 的結構時遇到了一個常見問題:使用malloc() 進行動態記憶體分配的字串。這個問題源自於 C 中物件建構和記憶體管理的複雜性。

Malloc 的問題

Malloc 分配原始內存,建立未初始化的空間區塊。但是,對具有重要建構函式的物件(例如 std::string)使用 malloc 是有問題的,因為它不會呼叫建構函式來正確初始化物件。

使用 New 而不是 Malloc

解決方案是使用 C 運算子 new 而不是 malloc。 New 建立一個新物件並呼叫其建構函數,確保正確的初始化。在您的情況下,您可以使用:

example *ex = new example;
登入後複製

使用新的放置原始記憶體

如果您特別需要使用malloc,您可以使用malloc分配原始記憶體接著使用placement new在該記憶體中建構物件:

void *ex_raw = malloc(sizeof(example));
example *ex = new(ex_raw) example;
登入後複製

但是,在這種情況下,直接使用new是首選方法。

以上是為什麼我不能在 C 結構中將 Malloc 與 std::strings 一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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