qt5에서 QSharedPointers를 사용할 때 세그 오류

에릭 혼그

qt-creator 3.5.1과 함께 qt5.5.1을 사용하고 있으며 GeoDataStyle로 GeoDataPlacemark에 스타일을 설정하려고합니다. 이전에는 잘 작동했지만 Marble 업데이트 후 직접 포인터 대신 공유 포인터를 사용하면 내 프로그램이 오류를 발생시킵니다. GDB를 사용하여 styleArch 직접 포인터를 사용하여 QSharedPointer를 만드는 줄까지 세그 오류를 추적했습니다. 누구든지 무엇이 문제가 될 수 있는지 알고 있습니까?

내 이전 코드는 다음과 같습니다.

styleArch->setIconStyle( *icon );
place->setStyle( styleArch ); //Old Marble

새 Marble API를 사용하는 새 코드는 다음과 같습니다.

styleArch->setIconStyle( *icon );
place->setStyle(Marble::GeoDataStyle::Ptr( styleArch )); //New Marble

시간 내 줘서 고마워!

제임스 페건

줄 : Marble::GeoDataStyle::Ptr( styleArch )임시 QSharedPointer를 만들고이를 포인터로 styleArch로 전달합니다. QSharedPointer는이 시점에서 styleArch *의 소유권을 가지므로 이전에 소유 한 styleArch *는 더 이상 소유하지 않습니다.

의 setStyle의 방법은 소요 const를 참조 방금 만든 임시 QSharedPointer을하고 그것을 잠시 사용하지만 (이 CONST 때문에) 중요한 것은, QSharedPointer의 참조 카운터를 증가하지 않습니다.

즉, setStyle에 대한 호출이 완료 되 자마자 임시 QSharedPointer가 범위를 벗어나 (소멸자를 호출) 힙에서 styleArch 객체를 삭제합니다. 이것은 styleArch *의 원래 소유자가 현재 잘못된 포인터를 보유하고 있다는 것을 전혀 모르기 때문에 당신을 나쁜 방식으로 만듭니다. styleArch *의 추가 사용은 segfault가되어야합니다.

가장 쉬운 수정은 styleArch *의 소유자를 업데이트하여 대신 QSharedPointer <>를 스타일 아치로 유지하는 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQlite를 사용하여 QT5에서 DB를 닫고 열 때 오류 발생

분류에서Dev

Xlsxwriter 및 PyQt4를 사용할 때 세그먼트 오류

분류에서Dev

명령 줄 인수를 사용할 때 세그먼트 오류

분류에서Dev

Delphi에서 Java Bridge를 통해 DocumentBuilderFactory를 사용할 때 세그먼트 화 오류

분류에서Dev

wcf를 사용할 때 Elmah 오류 로그에 액세스 할 수 없습니다.

분류에서Dev

부스트에서 prim_minimum_spanning_tree를 사용할 때 세그멘테이션 오류

분류에서Dev

변수를 사용하여 배열을 오프셋 할 때 세그 오류

분류에서Dev

CentOS 7에서 사용자를 휠 그룹에 추가 할 때 오류 발생

분류에서Dev

QT5를 사용할 때 왜 다음과 같은 오류가 발생합니까?

분류에서Dev

대시에서 프로세스 대체를 사용할 때 '구문 오류 : "("예상치 못한 "오류보고

분류에서Dev

삽입 정렬에서 시프트를 계산할 때 세그 오류-C

분류에서Dev

팔에서 qt5를 실행할 때 gstreamer-critical

분류에서Dev

가변 템플릿 함수를 사용하여 labmda에서 리터럴에 대한 오른쪽 참조를 전달할 때 세그먼트 오류

분류에서Dev

웹 사이트를 Heroku에 배포 할 때 응용 프로그램 오류

분류에서Dev

플라스크에서 세션을 사용할 때 키 오류

분류에서Dev

PyObject_CallMethod는 때때로 파이썬 메서드를 호출 할 때 오류를 세그합니다.

분류에서Dev

구조체에 액세스 할 때 세그 오류

분류에서Dev

구조 요소에 메모리를 할당하려고 할 때 세그멘테이션 오류 오류 수신

분류에서Dev

lpthread에서 프로세서 수를 변경할 때 세그먼트 화 오류 (코어 덤프 됨)

분류에서Dev

bcm 함수를 사용할 때 RaspberryPi의 세분화 오류

분류에서Dev

Linux를 사용할 때 세분화 오류 (Xcode가 아님)

분류에서Dev

Qt GUI 애플리케이션에서 AsmJit를 사용할 때 오류 발생

분류에서Dev

Phonegap에서 sqlite 플러그인을 사용할 때 Ajax 오류

분류에서Dev

3D 벡터에서 액세스 요소를 시도 할 때 세그 오류

분류에서Dev

명령 줄과 Atom 사용자 인터페이스 모두에서 패키지 및 테마를 설치하려고 할 때 세그먼트 오류

분류에서Dev

<label> 태그를 사용할 때 HTML 형식 오류

분류에서Dev

"-"플래그를 완료하려고 할 때 compgen 사용 오류

분류에서Dev

사용자 로그인이 오류를 반환 할 때 SetState 오류

분류에서Dev

Numba에서 클래스를 사용할 때의 서명 오류

Related 관련 기사

  1. 1

    SQlite를 사용하여 QT5에서 DB를 닫고 열 때 오류 발생

  2. 2

    Xlsxwriter 및 PyQt4를 사용할 때 세그먼트 오류

  3. 3

    명령 줄 인수를 사용할 때 세그먼트 오류

  4. 4

    Delphi에서 Java Bridge를 통해 DocumentBuilderFactory를 사용할 때 세그먼트 화 오류

  5. 5

    wcf를 사용할 때 Elmah 오류 로그에 액세스 할 수 없습니다.

  6. 6

    부스트에서 prim_minimum_spanning_tree를 사용할 때 세그멘테이션 오류

  7. 7

    변수를 사용하여 배열을 오프셋 할 때 세그 오류

  8. 8

    CentOS 7에서 사용자를 휠 그룹에 추가 할 때 오류 발생

  9. 9

    QT5를 사용할 때 왜 다음과 같은 오류가 발생합니까?

  10. 10

    대시에서 프로세스 대체를 사용할 때 '구문 오류 : "("예상치 못한 "오류보고

  11. 11

    삽입 정렬에서 시프트를 계산할 때 세그 오류-C

  12. 12

    팔에서 qt5를 실행할 때 gstreamer-critical

  13. 13

    가변 템플릿 함수를 사용하여 labmda에서 리터럴에 대한 오른쪽 참조를 전달할 때 세그먼트 오류

  14. 14

    웹 사이트를 Heroku에 배포 할 때 응용 프로그램 오류

  15. 15

    플라스크에서 세션을 사용할 때 키 오류

  16. 16

    PyObject_CallMethod는 때때로 파이썬 메서드를 호출 할 때 오류를 세그합니다.

  17. 17

    구조체에 액세스 할 때 세그 오류

  18. 18

    구조 요소에 메모리를 할당하려고 할 때 세그멘테이션 오류 오류 수신

  19. 19

    lpthread에서 프로세서 수를 변경할 때 세그먼트 화 오류 (코어 덤프 됨)

  20. 20

    bcm 함수를 사용할 때 RaspberryPi의 세분화 오류

  21. 21

    Linux를 사용할 때 세분화 오류 (Xcode가 아님)

  22. 22

    Qt GUI 애플리케이션에서 AsmJit를 사용할 때 오류 발생

  23. 23

    Phonegap에서 sqlite 플러그인을 사용할 때 Ajax 오류

  24. 24

    3D 벡터에서 액세스 요소를 시도 할 때 세그 오류

  25. 25

    명령 줄과 Atom 사용자 인터페이스 모두에서 패키지 및 테마를 설치하려고 할 때 세그먼트 오류

  26. 26

    <label> 태그를 사용할 때 HTML 형식 오류

  27. 27

    "-"플래그를 완료하려고 할 때 compgen 사용 오류

  28. 28

    사용자 로그인이 오류를 반환 할 때 SetState 오류

  29. 29

    Numba에서 클래스를 사용할 때의 서명 오류

뜨겁다태그

보관