2
옵션 A에서 초기화되지 않은 메모리를 할당 할 수있는 가장 관용적 방법입니다 더 짧지 만 ::operator new
은 분명히 C++이며 std::malloc
으로 구현되었을 것입니다. 어느 쪽이 C++에서 사용하는 것이 더 낫고/더 관용적인지.어느 하나는 C++
옵션 A에서 초기화되지 않은 메모리를 할당 할 수있는 가장 관용적 방법입니다 더 짧지 만 ::operator new
은 분명히 C++이며 std::malloc
으로 구현되었을 것입니다. 어느 쪽이 C++에서 사용하는 것이 더 낫고/더 관용적인지.어느 하나는 C++
가능한 한 메모리를 유형 안전 방식으로 할당하는 것이 좋습니다. 그 질문 중의 경우, 옵션 A를 선호, operator new(size_t, std::nothrow)
이유는 new
delete
가 (이 사용자 정의 할당/누수 탐지 시나리오에서 유용 할 수 있습니다) 합법적으로 재정의 할 수 있습니다.set_new_handler
)를 처리 할 대체 할당자가있을 수 있습니다.operator
new
/delete
에서 지원하지 않는 realloc
와 재 할당을 최적화하려면malloc
/free
을 선호하는 유일한 이유입니다.
[std :: aligned_storage] (http://en.cppreference.com/w/cpp/types/aligned_storage)를 살펴보십시오. –
@ FrançoisAndrieux : std :: aligned_storage가 메모리를 할당하지 않습니다. – geza
@geza 사실입니다. 내 의견의 요점은 원시 메모리 대신'std :: aligned_storage'의 인스턴스를 할당 할 것을 제안하는 것이 었습니다. 이 예제는 메모리가 'T'유형의 객체를 몇 개 보유 할만큼 커야한다는 것을 알 수 있음을 보여줍니다. 그것은 휴대용 솔루션입니다. –