|
위의 질문을 올리고 연구해보고 뒤져보고 소스코드 보고 하다가
우선 1_33 버젼이 나온걸 알고 그걸로 교체해보았습니다만 안되더군요
그래서 다시 뒤져보니 스레드는 DLL링킹을 하라고(vc를 제외하곤) 되어있길래
RTL 체크 다시 해보니 BC++에서 에러는 안나는군요.
다만 VC의 경우 릭체커가 첨에 5개의 에러를 뿜더니
위와같은 방법으로 해도 2개의 에러를 뿜더군요.(런타임중에 메모리릭 에러)
아무래도 BC++의 경우 코드가드가 성능이 좀 떨어져서 못잡는것인지 -_-;
(VC에서는 컴퓨웨어 데브파트너 어쩌구로 체크 -_-);
ps. 다만 부스트::스레드에 문제가 있는건 확실한것 같습니다.
www.boost.org 토론장에 가보니 스레드에대한 메모리릭이 리포트 되어있었습니다.
WARSHIP 님이 쓰신 글 :
: 우선 코드가드가
: 오류 아닌것을 오류라고하는 경우가 있는지 궁금합니다(메모리릭).
:
:
: 제가 boost::thread 를 돌리는 간단한 어플을 테스트중에
: 혹시나 해서 코드가드를 켜봤더니 스레드가 해제되는시점에서
: 에러가 나더라구요.(메모리릭) 다만 스레드내에서
: 동적생성하는 변수는 없구요.
: 스레드가 해제되는 시점 전에 확실하게
: thread->join() 으로 종료가 됩니다.
: 그리고 스레드는 scoped_ptr<boost::thread> 로 관리했습니다.
:
: 순서는 대충 이런식입니다.
: scoped_ptr<boost::thread> th;
: th.reset( new boost::thread(ptr_function) );
: ~~
: ~~
: th.join();
:
:
: 그런데 자꾸 릭이 뜨니까 당황스럽네요 -_-;
: 혹시나 해서 팁&트릭 란에서 황경록님이 올리신 소스도
: 릭이 생기더라구요.
: 제가 boost의 사용법이 미숙한건지 고수분들의 조언 부탁드립니다.
|