string heap 소멸자?
글쓴이: Lightstar / 작성시간: 토, 2014/04/26 - 11:29오후
잘 되던 string 비교 부분에서 힙이 손상됬다는 에러가 나기 시작했습니다.
속성에서
MFC 사용을 '정적 라이브러리에서 MFC 사용'으로
런타임 라이브러리를 '다중 스레드 (/MT)'로 바꾼 것 밖에 없습니다.
어렵게 구한 라이브러리가 저렇게밖에 지원을 안해줘서...
string ma="aaaa";
if(ma==rs->getString(3))
에서 처음 발생했는데 getString(3)은 오라클 쿼리 실행문입니다. 3번째 필드를 가져오라는...
무슨 문제인가 싶어서
string or=rs->getString(3);
if(ma==or)
해주니까 여긴 지나갑니다.
그런데 이 if문 마지막 부분에서 또 같은 에러가 발생합니다.
에러 떴을 때 중단 안누르고 계속 누르면 정상적으로 작동이 계속 됩니다.
string 영역이 어떻게 잘못 됬다는건가요?
속성 바꿔주면 다시 에러는 안납니다.
그런데 저 셋팅을 꼭 해야되는데 저 에러만 무시할 수 있게 환경설정에 셋팅같은거 없나요?
Forums:
ado 사용하기'를 검색해보세요.
리턴값을 변수에 넣어서 확인해 보시구요.
배열에 범위를 넘었는지도 확인해 보세요.
데이터 형'이 다른지도 확인해 보세요.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
무시하시면 안됩니다.
문제의 특성상, 저걸 무시하고 강제로 그냥 넘어가시면 나중에 더욱 큰 댓가를 치루게 될 확률이 높습니다.
그리고 현재 상태에서는 해당 라이브러리가 문제인지 아니면 직접 작성중인 프로그램이 문제인지 알 수 없습니다. (라이브러리 및 환경설정을 바꾸기 전에는 에러가 안 났다고 해서 본체에 문제가 없다고 단정할 수 없습니다.)
현재 에러가 발생하는 환경설정을 그대로 유지하신 상황에서, 오라클 라이브러리 클래스(?)를 프로젝트에서 제거하시고 똑같은 사용법을 갖는 테스트용 껍데기 라이브러리(또는 클래스)를 사용해서 동일한 에러가 나는지부터 확인해봐야 될 듯 합니다. 또는, 반대로 MFC도 쓰지 않는 아주 간단한 테스트프로그램을 작성해서 그걸 가지고 해당 라이브러리를 테스트해보셔도 좋고요.
그런데 어떤 일을 하는 라이브러리인지요? 일반적인 용도의 라이브러리라면 다른 대안이 있을 수도 있습니다.
--
.
암호화 라이브러리입니다.
지금 crypto++에서 저런 증상이 나타나구있어요.
libcrypto라던지 단순하게 cpp, h로만 제공해주는 것도 써봤는데 다들 뭐가 문제가 있네요.
지금 다행히 되는걸 구해서 약간 제약을 받으면서 쓰게 됬지만 crypto++가 보니까 사용법이나 문자열호환이나 가장 깔끔하더라구요.
그런데 정적 라이브러리로안하고 dll로 가져다 쓰게되면 에러가 난다는 말이 많아서 거의 정적라이브러리 형식으로만 쓰나본데 그러기 위해서 프로젝트 속성도 본문에 있는 것처럼 맞춰쓰다보면 저런 문제가 발생합니다.
지금 다른 대안을 찾았지만 해결할 수 있다면 저걸로 바꿔쓰고싶습니다...
말씀드린대로.
해당 라이브러리의 문제가 확실한지부터 증명이 되어야 합니다. 아무 기능이 없는 빈 프로그램으로 해당 증상을 재현해보시면 됩니다.
크립토 라이브러리라면 일단 MFC하고는 아무런 관련이 없어보이는데 정작 문제는 MFC에서 발생하는 걸로 봐서 라이브러리의 문제가 아닐 수도 있습니다. 그리고 MFC를 사용하는 라이브러리가 아닌 이상 메인 프로젝트의 MFC관련 설정을 바꿀 이유도 없을것 같고요. (이 부분은 해당 라이브러리만의 무슨 특별한 이유가 있어서 그럴지도 모르겠습니다만 일단 제가 보기엔 그렇습니다.)
개인적인 생각으로는 라이브러리와는 무관하고 본체의 문제일듯 합니다. 다만 운나쁘게 묻혀져 오다가 프로젝트 설정의 변경으로 문제가 다행히 실제로 발견된 것처럼 생각이 되네요.
--
댓글 달기