Malloc을 사용하여 문자열을 포함하는 구조체 할당
malloc()을 사용하여 std::string 멤버가 포함된 구조체의 메모리를 관리하려고 하면 segfaults 발생할 수 있습니다. 이는 malloc()이 객체를 생성하는 대신 원시 메모리 할당을 제공하기 때문입니다.
객체 할당에 new 사용
std::string을 사용하여 구조체에 메모리를 올바르게 할당하려면 멤버라면 malloc() 대신 new를 사용하세요. 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 }
Raw Memory Management를 위한 new 배치
malloc()을 사용하여 메모리가 이미 할당된 경우 배치 new를 사용하여 해당 객체를 구성할 수 있습니다. memory.
예:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!