> 백엔드 개발 > C++ > C에서 문자열을 포함하는 구조에 대한 메모리를 올바르게 할당하는 방법은 무엇입니까?

C에서 문자열을 포함하는 구조에 대한 메모리를 올바르게 할당하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-01 09:47:12
원래의
688명이 탐색했습니다.

How to Correctly Allocate Memory for Structures Containing Strings in C  ?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿