Programing

삭제 vs 삭제 []

lottogame 2020. 8. 26. 08:19
반응형

삭제 vs 삭제 []


중복 가능성 :
(POD) 메모리 해제 : delete []가 delete와 같습니까?

제가 C ++를 배웠을 때 이것은 오래 전 일입니다. 나는 절대 사용하지 말라고 delete들었지만 단일 객체에서 delete[]수행 delete[]하는 것은 delete. 선생님을 너무 많이 믿지 않는다는 것을 알면서도 이것이 사실입니까?

delete대신 전화 할 이유가 delete[]있습니까?

SO에서 관련 질문을 스캔했지만 명확한 답을 찾지 못했습니다.


표준 (5.3.5 / 2)에서 :

첫 번째 대안 (객체 삭제)에서 삭제 피연산자의 값은 배열이 아닌 객체에 대한 포인터 또는 그러한 객체의 기본 클래스를 나타내는 하위 객체 (1.8)에 대한 포인터 (10 절)입니다. 그렇지 않으면 동작이 정의되지 않습니다.

두 번째 대안 (배열 삭제)에서 삭제 피연산자의 값은 이전 배열 new-expression의 결과 인 포인터 값이어야합니다. 그렇지 않으면 동작이 정의되지 않습니다.

그래서 아니오 : 그들은 결코 동등하지 않습니다!


delete []은 "벡터 삭제"이며 벡터 new에 해당합니다 new[].

일치하는 할당 자 쌍을 사용해야합니다. 예를 들면 malloc/free, new/delete, new[]/delete[], 다른 사람은 정의되지 않은 동작을 얻을.


아니! delete[]할당 할 때 호출 new[]하고 그렇지 않으면 호출 delete합니다.

교사가 말한 내용은 정의되지 않은 동작으로 이어지며 운이 좋으면 응용 프로그램 충돌이 발생합니다.


delete단일 객체 delete[]를 삭제하는 데 사용되며 객체 배열을 삭제하는 데 사용됩니다. 자세한 내용은 링크확인하십시오 .

참고 URL : https://stackoverflow.com/questions/4255598/delete-vs-delete

반응형