상속한 클래스를 넘겨 줬을 때 해당 클래스의 자료형이 뭔지 정확히 알기 위해 사용한다. 컴파일 시에 RTTI를 사용하여 컴파일 하면 vtable을 사용 할 수 있다. vtable은 가상 함수 테이블인데 아래의 소스를 함 보자. class Parent{ public: virtual void func(Parent obj); }; class Child : public Parent{ public: virtual void func(Parent obj); }; 이런 클래스가 있을 때 Parent p; Child c; p.func(p); p.func(c); 이렇게 하면 함수 func에서는 인자로 들어온 Parent obj에 대하여 이것이 Child인지 Parent 인지 알 길이 없다. 자바에서는 걍 p.getClas..
dynamic_cast const_cast reinterpret_cast static_cast A가 B의 superclass일 때 A* a; B* b = new B(); a = (A *)b; 이거는 dynamic_cast(b);와 같음 dynamic_cast는 safe함. 서브->슈퍼 캐스팅은 상관 없지만 슈퍼->서브 캐스팅은, C style로 캐스팅하면 캐스팅이 되긴 하지만, 참조 할 수 없는 멤버를 참조 하려 하면 런타임 에러가 발생함. dynamic_cast를 이용하면 서브->슈퍼 일때만 캐스팅 하고 아닐 대는 null을 참조함. 따라서 null 체크를 통해 런타임 에러를 방지할 수 있다. 덧, 포인터로 선언한 클래스 일때만 된다. Parent *p1 = new Child; Parent *p2 = ..
Service에서 Activity를 띄우는 순간에 현재 Activity가 속해 있는 Application이 만약 실행 돼 있었다면, 해당 화면에 보이는 Application의 Activity가 뜬 다음에 그 위로 호출한 Activity가 올라온다.. 즉..Activity가 자기 Application의 스택을 다 가져온다... 뒤로 가기 버튼을 누르면 돌아가는 이전 스택이란 녀석이.. 미리 Application에서 띄워져있던 Activity이다. Application이 실행되어 있지 않은 상태라면 호출한 Activity만 뜨던데.. 어떻게 처리해야할지 난감하다.. 거의 일주일째 삽질 중 인거같다 -.- ----------------------------------------------------------..
안드로이드로 Google Map을 다루면서, 맵에서 다루는 메모리가 넘치길래 onStop에서 메모리를 다 해제해 주었다.(자바는 =null 해주면 알아서 가비지 컬렉터가 해제해간다.) 근데 문제는 전화가 온걸 받은 뒤 다시 맵 화면으로 돌아가면~ 두둥~ 에러가 나는 것이었다. 홈 버튼을 눌러 메인 페이지에 다녀올 때도 마찬가지였다. 문제는 onResume에 있었다. 난 그냥 막연히 뒤로 갔다 돌아오면 onCreate가 다시 실행될 줄 알았는데, onCreate같은건 실행될 기미조차 없고, 그냥 onResume만 호출된다. 내가 기존에 맵에 사용되는 메모리를 다 onCreate에서 처리해 줬기 때문에, onStop으로 인해 해제된 메모리를 다시 불러주어야 했다. 액티비티 호출 시 호출 순서가 onCreat..
맵의 오버레이를 동적으로 로딩하는데 ItemizedOverlay의 getIndexToDraw에서 자꾸만 ArrayIndexOutOfBoundsException이 났다.. 보니까 오버레이의 추가와 삭제가 쓰레드를 이용하여 동시에 진행되면서, 있지도 않은 Array의 Index를 참조하면서 나는 것 같았다.. 아오... 그냥 삭제를 다 한담에 접근을 하던지.. 삭제하면서 어디선 add하고 그러니까 계속 저 에러가 나지.. ArrayList는 thread-safe하지 않기 때문에 참.. 슬프다 ㅠ_ㅠ 수 시간의 삽질 끝에 드디어 익셉션을 잡아냈다.. 플밍 경력이 오래된 사람이라면 쉽게 잡을 수 있는 부분이었을텐데.. 난 도대체 몇시간이나 소모한건지.... 여튼 잡게 돼서 너무 좋았음.
- Total
- Today
- Yesterday
- Visual C++
- AWS
- gcc
- C++
- jni
- Quiz
- algorithm
- java
- 안드로이드
- it
- 리눅스
- database
- API
- NDK
- source
- winapi
- Python
- driver
- linux
- C
- jni강좌
- MFC
- 드라이버
- 프로그래밍
- Cloud
- android
- Troubleshooting
- 음악
- db
- kering
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |