문제

의 차이점은 무엇입"새로운"및"malloc"및"calloc"및 다른 사람에서는 가족이 있는가?

(사)해야 합니까 아무것도다"새로운"?

그들 중 하나를 사용하여 구현된 다른?

도움이 되었습니까?

해결책

new 그리고 delete C ++ 특정 기능입니다. 그들은 C에 존재하지 않았습니다. malloc 구식 C는 일을하는 방법입니다. 대부분의 경우 C ++에서 사용할 필요가 없습니다.

  • malloc 비 초기 기억을 할당합니다. 할당 된 메모리는 함께 해제해야합니다 free.
  • calloc 처럼 malloc 그러나 할당 된 메모리를 상수 (0)로 초기화합니다. 함께 해방되어야합니다 free.
  • new 생성자를 호출하여 할당 된 메모리를 초기화합니다 (객체 인 경우). 메모리가 할당되었습니다 new 함께 출시해야합니다 delete (이는 파괴자라고 부릅니다). 필요한 크기를 수동으로 지정하고 적절한 유형으로 캐스트 할 필요는 없습니다. 따라서 더 현대적이고 오류가 덜 발생합니다.

다른 팁

new/delete + new []/delete [] :

  • New/Delete는 메모리를 할당하고 힙에서 메모리를 처리하는 C ++ 방법입니다.
  • new [] 및 delete []는 연속 메모리의 배열을 할당하는 C ++ 방법입니다.
  • malloc보다 안전한 유형이기 때문에 사용해야합니다.
  • 생성자/소멸자라고 부르기 때문에 사용해야합니다.
  • Realloc 방식으로 사용할 수 없지만 새로운 배치를 사용하여 동일한 데이터 버퍼를 재사용 할 수 있습니다.
  • 데이터를 새로 할당하고 무료로 자유롭게 할당하거나 삭제 [

Malloc/Free + 가족 :

  • Malloc/Free/Family는 힙에서 메모리를 할당하고 자유로운 메모리를 할당하는 방법입니다.
  • Calloc은 Malloc과 동일하지만 메모리를 초기화합니다.
  • 메모리를 재 할당 해야하는 경우 사용해야합니다.
  • 데이터를 Malloc과 함께 할당 할 수없고 삭제 또는 삭제로 해제 될 수 없습니다 [

또한 내 여기에 관련 답변

  • 새로운 할당하고 전화를 ctor(순서가 지정되지 않음),삭제 dtor 모리 할당되는 메모리를 호출하여 새로운
  • malloc 만 일부를 할당하는 메모리,무료 삭제 할당된 메모리에 의해 malloc
  • 새로운 구현될 수 있 사용하는 malloc(지 않지만 필요에 의해 표준)
  • calloc 와 같은 일을 하는 malloc 도 zeroizes 새로 할당된 메모리

로 다른 게시물이 있고 지적했:malloc/은 부품의 C++호환을 위한 C.

또한 참조하십시오: 이후:새로운 대 malloc

새로 할당 된 메모리에서 생성자가 호출되는 새로운 수단을 사용합니다. 할당되는 것이 생성자가 없다면, 새로운 새로운 것은 Malloc과 기능적으로 동일합니다. 일반적으로 그것에 대한 pereference에서 사용해야합니다.

MALLOC -C ++ 표준은 어느 접근 방식도 필요하지 않습니다.

당신은 새로운 것 외에는 아무것도 필요하지 않습니다. C ++의 Malloc을 완전히 대체합니다.

차이점은 : Malloc은 메모리를 할당합니다. 새로운 할당 된 메모리와 생성자를 호출합니다. 마찬가지로 무료는 메모리를 풀어줍니다. 삭제 삭제는 메모리를 풀고 소멸자를 호출합니다.

경고의 말 : 두 관용구를 섞지 마십시오. 결과는 정의되지 않았습니다.

내가 기억할 수있는 새로운 Malloc의 주요 차이점은 Realloc을 사용하여 새로운 메모리를 할당 할 수 없다는 것입니다. 따라서 메모리 블록의 크기를 늘리거나 줄이려면 새 블록을 할당하고 모든 것을 복사해야했습니다.

Calloc을 사용하면 Malloc이하지 않는 동안 할당하는 메모리 블록을 초기화 할 수 있습니다.

때를 새로운 물체, 객체의 공간은 할당 될뿐만 아니라 객체의 생성자가 호출됩니다. 그러나 이것은 C ++ 방식입니다. Malloc 이전 버전의 방법입니다 메모리 할당. Calloc 와 같다 Malloc, 그것을 제외하고는 모든 비트 0에 메모리를 지 웁니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top