> 백엔드 개발 > C++ > 본문

C++에서 malloc과 new의 차이점

下次还敢
풀어 주다: 2024-05-01 12:06:17
원래의
669명이 탐색했습니다.

C++에서 malloc과 new의 주요 차이점은 malloc에 ​​할당된 메모리는 수동으로 해제해야 하는 반면 new에 할당된 메모리는 자동으로 해제된다는 것입니다. Malloc은 할당이 실패하면 NULL을 반환하고, 새 할당이 실패하면 예외를 발생시킵니다. new는 할당된 메모리를 자동으로 초기화하고, malloc으로 할당된 메모리는 수동으로 초기화해야 합니다. new는 배열 할당, 사용자 정의 할당자 등과 같은 고급 기능을 지원하지만, malloc은 이를 지원하지 않습니다.

C++에서 malloc과 new의 차이점

C++에서 malloc과 new의 차이점

malloc과 new는 모두 C++에서 일반적으로 사용되는 메모리 할당 함수이지만 둘 사이에는 몇 가지 중요한 차이점이 있습니다.

1. Syntax

<code class="cpp">void *malloc(size_t size);
void *new(size_t size, std::nothrow_t = nullptr);</code>
로그인 후 복사

2. 반환 값

  • malloc: 할당에 성공하면 할당된 메모리에 대한 포인터를 반환하고, 실패하면 NULL을 반환합니다.
  • new: 할당이 성공하면 할당된 메모리에 대한 포인터를 반환합니다. 실패하면 std::bad_alloc 예외가 발생합니다. std::bad_alloc异常。

3. 内存管理

  • malloc: 分配的内存是由C运行时库管理的,需要手动使用free释放。
  • new: 分配的内存是由C++运行时库管理的,可以使用delete自动释放。

4. 初始化

  • malloc: 分配的内存未经初始化,需要手动进行初始化。
  • new: 分配的内存会自动使用构造函数进行初始化。

5. 异常处理

  • malloc: 分配失败不会抛出异常,而是返回NULL。
  • new: 分配失败会抛出std::bad_alloc

3. 메모리 관리

  • malloc: 할당된 메모리는 C 런타임 라이브러리에 의해 관리되며 free를 사용하여 수동으로 해제해야 합니다.
  • new: 할당된 메모리는 C++ 런타임 라이브러리에 의해 관리되며 삭제를 사용하여 자동으로 해제될 수 있습니다.

4. 초기화

malloc:🎜 할당된 메모리는 초기화되지 않으며 수동으로 초기화해야 합니다. 🎜🎜🎜new:🎜 할당된 메모리는 생성자를 사용하여 자동으로 초기화됩니다. 🎜🎜🎜🎜5. 예외 처리🎜🎜🎜🎜🎜malloc:🎜 할당에 실패하면 예외가 발생하지 않지만 NULL이 반환됩니다. 🎜🎜🎜new:🎜 할당에 실패하면 std::bad_alloc 예외가 발생하며, 이는 예외 처리에 사용될 수 있습니다. 🎜🎜🎜🎜6. 고급 기능🎜🎜🎜🎜🎜new:🎜 배열 할당, 사용자 정의 할당자, 신규 배치 등과 같은 다양한 고급 기능을 지원합니다. 🎜🎜🎜malloc:🎜은 이러한 고급 기능을 지원하지 않습니다. 🎜🎜🎜🎜요약🎜🎜🎜일반적으로 malloc과 new는 모두 메모리 할당 기능이지만 new가 더 안전하고 사용하기 쉽고 자동으로 초기화하고 예외를 처리할 수 있습니다. 간단한 메모리 할당 시나리오에는 malloc을 사용할 수 있지만, 더 많은 기능이 필요한 복잡한 시나리오에는 new를 사용하는 것이 좋습니다. 🎜

위 내용은 C++에서 malloc과 new의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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