C에서 free()
은 메모리를 해제하는 데 사용됩니다 (예 : free(ptr)
). 내가 알고 있듯이 블록 크기 정보를 저장하기 위해 라이브러리 코드에서 ptr 전에 여분의 메모리가 할당됩니다. free()
이 호출 된 후 전체 블록이 추적 된 다음 해제됩니다.C++의 논리 삭제 및 삭제 []
C++에는 두 가지 형식의 new와 delete가 있습니다. 하나는 배열을위한 것입니다. new[]
을 사용하는 경우 delete[]
을 사용해야합니다. 예 :
int ptr = new [10];
delete [] ptr;
질문 1 : 여기 delete ptr
을 사용할 수 있습니까? 그래도 괜찮 으면 delete ptr + 2
?
질문 2 : new[]
과 일치하도록 delete[]
을 사용해야하는 경우 왜 두 가지 형태의 삭제가 필요합니까? 한 양식 (예 : delete
)이면 충분합니다.
모든 제안 주셔서 감사합니다!
감사합니다. Mgetz. 질문 2 : 왜 C++ 표준은 어떤 상황에서 하나의 올바른 양식 만 있으면 삭제 []와 삭제를 제안 했습니까?
마음을 열고 http://www.parashift.com/c++-faq/freestore-mgmt.html – lsalamon
이것은 C++의 먼지가 많은 부분 중 하나입니다. 전염병처럼 새로운 []을 피하고 []를 삭제하십시오. – epx