使用Malloc 分配包含字串的結構
嘗試使用malloc() 管理包含std::string 成員的結構的記憶體時,會出現段錯誤可能會發生。這是因為 malloc() 提供原始記憶體分配而不是構造物件。
使用 new 進行物件分配
使用 std::string 為結構正確分配記憶體成員,使用 new 而不是 malloc()。 new 會自動在分配的記憶體中建構物件。
範例:
#include <iostream> #include <string> struct example { std::string data; }; int main() { example *ex = new example; // Allocate memory using 'new' ex->data = "hello world"; std::cout << ex->data << std::endl; delete ex; // Release allocated memory when done }
原始記憶體管理的放置new
如果已經使用malloc()分配了記憶體,則可以使用placement new來建構這個物件
範例:
void *ex_raw = malloc(sizeof(example)); example *ex = new(ex_raw) example; // Construct the object in allocated memory using placement 'new'
但是,在物件建構中,直接使用 new 通常優於放置 new。
以上是如何為C中包含字串的結構正確分配記憶體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!