在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中文網其他相關文章!