string heap 소멸자?

Lightstar의 이미지

잘 되던 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 영역이 어떻게 잘못 됬다는건가요?

속성 바꿔주면 다시 에러는 안납니다.
그런데 저 셋팅을 꼭 해야되는데 저 에러만 무시할 수 있게 환경설정에 셋팅같은거 없나요?

File attachments: 
첨부파일 크기
Image icon 2.JPG27.84 KB
Image icon 1.JPG51.73 KB
shint의 이미지

리턴값을 변수에 넣어서 확인해 보시구요.

배열에 범위를 넘었는지도 확인해 보세요.

데이터 형'이 다른지도 확인해 보세요.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

mirheekl의 이미지

문제의 특성상, 저걸 무시하고 강제로 그냥 넘어가시면 나중에 더욱 큰 댓가를 치루게 될 확률이 높습니다.

그리고 현재 상태에서는 해당 라이브러리가 문제인지 아니면 직접 작성중인 프로그램이 문제인지 알 수 없습니다. (라이브러리 및 환경설정을 바꾸기 전에는 에러가 안 났다고 해서 본체에 문제가 없다고 단정할 수 없습니다.)

현재 에러가 발생하는 환경설정을 그대로 유지하신 상황에서, 오라클 라이브러리 클래스(?)를 프로젝트에서 제거하시고 똑같은 사용법을 갖는 테스트용 껍데기 라이브러리(또는 클래스)를 사용해서 동일한 에러가 나는지부터 확인해봐야 될 듯 합니다. 또는, 반대로 MFC도 쓰지 않는 아주 간단한 테스트프로그램을 작성해서 그걸 가지고 해당 라이브러리를 테스트해보셔도 좋고요.

그런데 어떤 일을 하는 라이브러리인지요? 일반적인 용도의 라이브러리라면 다른 대안이 있을 수도 있습니다.

--

Lightstar의 이미지

암호화 라이브러리입니다.
지금 crypto++에서 저런 증상이 나타나구있어요.
libcrypto라던지 단순하게 cpp, h로만 제공해주는 것도 써봤는데 다들 뭐가 문제가 있네요.
지금 다행히 되는걸 구해서 약간 제약을 받으면서 쓰게 됬지만 crypto++가 보니까 사용법이나 문자열호환이나 가장 깔끔하더라구요.
그런데 정적 라이브러리로안하고 dll로 가져다 쓰게되면 에러가 난다는 말이 많아서 거의 정적라이브러리 형식으로만 쓰나본데 그러기 위해서 프로젝트 속성도 본문에 있는 것처럼 맞춰쓰다보면 저런 문제가 발생합니다.
지금 다른 대안을 찾았지만 해결할 수 있다면 저걸로 바꿔쓰고싶습니다...

mirheekl의 이미지

해당 라이브러리의 문제가 확실한지부터 증명이 되어야 합니다. 아무 기능이 없는 빈 프로그램으로 해당 증상을 재현해보시면 됩니다.

크립토 라이브러리라면 일단 MFC하고는 아무런 관련이 없어보이는데 정작 문제는 MFC에서 발생하는 걸로 봐서 라이브러리의 문제가 아닐 수도 있습니다. 그리고 MFC를 사용하는 라이브러리가 아닌 이상 메인 프로젝트의 MFC관련 설정을 바꿀 이유도 없을것 같고요. (이 부분은 해당 라이브러리만의 무슨 특별한 이유가 있어서 그럴지도 모르겠습니다만 일단 제가 보기엔 그렇습니다.)

개인적인 생각으로는 라이브러리와는 무관하고 본체의 문제일듯 합니다. 다만 운나쁘게 묻혀져 오다가 프로젝트 설정의 변경으로 문제가 다행히 실제로 발견된 것처럼 생각이 되네요.

--

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.