오늘 저는 코드 작성을 위해 약간의 메모리 프로파일 러를 작성했으며 처음으로 오버로드 된 operator new
입니다. 그렇게하면서, 나는 문법이 void* operator new(size_t sz)
이라고 생각했다. 이것은 실제로 void* malloc(size_t sz)
인 malloc
과 매우 유사합니다.void * in malloc 대 운영자 새로운
malloc
을 사용할 때 데이터 형식에 포인터를 명시 적으로 다시 캐스팅해야하므로 새로운 기능의 경우에는이 작업을 수행 할 필요가 없습니다. 컴파일러는 new
에 대한 올바른 데이터 유형을 어떻게 알 수 있습니까? 에이있는 이유는 무엇입니까? void *
을 반환하게합니까? T* operator new(size_t sz)
이 더 직관적이지 않습니까?
C에서는'malloc()'의 반환 값을 캐스팅 할 필요가 없습니다. 실제로 캐스팅은 중복되고, 컴파일러가 캐스트가 없을 때 잡았을 오류를 숨길 수 있습니다. – pmg
@pmg, 진정해, 질문에 실제로'C '태그가 붙어서는 안된다. – Shahbaz
'new'에 의해 할당 된 데이터를 '자유롭게'한다. –