Java는 앞서 언급 한 오류를 식별합니다. 즉, NullPointerException
및 ArrayOutOfBound
은 C++과 다릅니다 (g ++). 언제 어떻게 C++의 std::string
이 이러한 오류를 일으킬 수 있습니까? C++에서 이러한 오류를 어떻게 처리합니까? (예 : 런타임 오류, JAVA)?문자열로 인해 C++에서 NullPointerException 또는 ArrayOutOfBound 인덱스와 유사한 오류가 발생할 수 있습니까?
답변
C++ 모음은 범위를 벗어난 인덱스에 대해 throw되도록 보장 된 확인 된 인덱싱을위한 방법 인 at
을 제공합니다.
보통 []
색인 생성은 범위를 벗어난 색인에 대해 정의되지 않은 동작을 제공하는 것으로 보장 할 수 없지만 색인 검사를 지원하는 구현에서는 디버깅 및 테스트가 더 편리 할 수 있습니다.
따라서 C++에는 nullpointers에 대한 확인 된 핵심 언어가 제공되지 않습니다. typeid
표현식을 제외하고는 nullpointer를 Dereferencing하면 정의되지 않은 동작 만 있습니다. 이것은 C++ 설계의 주된 원칙은 사용하지 않는 것에 대해 비용을 지불하지 말아야한다는 것이며, 일반적으로 C++에서는 코드를 값 비싼 검사없이 풀 스로틀로 실행하기를 원하기 때문입니다.
“ string
기능 ”은 C++이지만 표준 라이브러리에서 제공하는 std::string
유형이 있습니다.
nullpointer를 인수로 사용하여 std::string
을 초기화 할 수 있으며 정의되지 않은 동작이 발생합니다. 즉, 여기서도 nullpointer 검사가 보장되지 않습니다. 핵심 언어 제공 검사와 대조적으로, 이것은 틀림없이 감시 유형의 설계 오류입니다. 단지 의미가 없습니다.
문자열, 요소에 대한 포인터, 배열에 대한 포인터 또는 사용자가 제공하기로 계약 한 것 대신에 nullpointer를 제공하여 거짓말해서는 안되는 곳이 있습니다. 왜 cstring에 대한 std :: string ctor가 특별한 경우인지를 추가 할 수 있습니다. – Deduplicator
@ Cheers 및 hth. 고마워. 문자열이 null로 초기화되는 곳을 제외하고 간단한 인스턴스를 명시 할 수 있습니까? std :: string 연산은 코딩시 'NullPointerException'및 'ArrayOutOfBound'와 동일한 오류를 생성 할 수 있습니다. –
@KomalJoshi : 대답의 첫 번째 문장에서 한 사례가 언급되었습니다. nullpointer로'std :: string'을 초기화하는 것은 그런 경우가 아닙니다 (불행히도). 그냥 UB 일 뿐이야. –
- 1. 어떤 논리 오류로 인해 런타임 오류가 발생할 수 있습니까?
- 2. .net mvc routing으로 인해 JavaScript 오류가 발생할 수 있습니까?
- 3. 간단한 할당으로 인해 세그멘테이션 오류가 발생할 수 있습니까?
- 4. 이 코드로 인해 "500"내부 서버 오류가 발생할 수 있습니까?
- 5. sproc과 호출 코드의 불일치로 인해 빌드 오류가 발생할 수 있습니까?
- 6. C에서 세그먼트 화 장애는 힙 영역의 바운드 접속에 대해서만 발생할 수 있습니까? 또는 스택의 정적 배열에서도 발생할 수 있습니까?
- 7. 메모리 예외로 인해 NullPointerException이 발생할 수 있습니까?
- 8. 데이터 캐싱으로 인해 간섭이 발생할 수 있습니까?
- 9. 메모리 부족으로 인해 NoSuchMethodError가 발생할 수 있습니까?
- 10. 404 오류로 인해 서버에 대해 ping을 수행하면 서비스 거부 공격과 유사한 문제가 발생할 수 있습니까?
- 11. npm과 호환되지 않는 노드 버전으로 인해 오류가 발생할 수 있습니다.
- 12. C에서 문자열로 ReAllocating하면 오류가 발생합니다.
- 13. C에서 _alloca와 유사한 함수를 작성할 수 있습니까?
- 14. 파일을 닫을 때 오류가 발생할 수 있습니까?
- 15. Form.Shown 이후에 처리 오류가 발생할 수 있습니까?
- 16. Delphi에서 추상 오류가 발생할 수 있습니까?
- 17. PHP 파싱에서 임의의 오류가 발생할 수 있습니까?
- 18. bind()에서 이러한 오류가 발생할 수 있습니까?
- 19. C에서 _attribute_ 또는 이와 유사한 항목이 무엇입니까?
- 20. org.hibernate.internal.SessionFactoryImpl로 인해 메모리 누수가 발생할 수 있습니다.
- 21. regex 공백 문자로 인해 주사가 발생할 수 있습니까?
- 22. SynchronizationContext.Post 또는 .Send로 예외가 발생할 수 있습니까?
- 23. INSERT 작업으로 인해 교착 상태가 발생할 수 있습니까? 가정
- 24. 함수가있는 조건으로 인해 도달하지 않은 코드가 발생할 수 있습니까?
- 25. 이로 인해 정의되지 않은 동작이 발생할 수 있습니까?
- 26. 한 컴퓨터에서 모호한 기호 오류가 발생할 수 있으며 다른 컴퓨터에서는 불확실한 기호 오류가 발생할 수 있습니까?
- 27. 그래픽 드라이버로 인해 응용 프로그램에서 메모리 누수가 발생할 수 있습니까?
- 28. MongoDB 인덱스와 $ 또는 연산자
- 29. 메모리 누수로 인해 UITableView 스크롤에 문제가 발생할 수 있습니까?
- 30. 중첩 된 호출로 인해 C에서 초기화되지 않은 인수가 발생할 수 있습니까?
물론 C++ 프로그램은 Java에서 정의한 오류를 트리거 할 수 없습니다. 내가 그 질문을 이해하는지 모르겠다. –
@IgorTandetnik : 나는 그 질문을 이해하기가 어렵지 않습니다. OP는 독자 분 께서 일정한 상식을 지킵니다. –
@IgorTandetnik 예, 알고 있습니다. C++'std :: string'에서 앞서 언급 한 오류가 어떤 방법으로 발생할 수 있는지 알고 싶었습니다. –