MFC시리얼통신 포인터 질문

momark의 이미지

제가 시리얼통신을 공부하고있는데 포트와 보레이트를 입력하는 구간을 다른 새창의 다이얼로그에 두고 작업을 했습니다. 다름이 아니라 CmdTaget을 상속받은 comm이라는 클래스를 새창 다이얼로그에 포인터로 넣었는데요 새창에서는 포인터에 입력한 변수들이 다 잘 들어가있고 작동도 잘됩니다. 근데 메인 다이얼로그에 똑같이 comm을 포인터로 추가하고 send를 보내려고 포인터를 사용하면 변수에 식을계산할수없다 또는 쓰레기값이 들어가있는데 제가 새창과 메인창이 CDialogEx를 상속받고있는데 같은 상속을 받고있으면 포인터를 양쪽에 못쓰나요? 아니라면 문제를 잘 모르겠네요;; 도와주세요

mirheekl의 이미지

일단 (관리만 잘 되면) 포인터를 양쪽에서 못 쓸 이유는 없으니 그건 넘어가고,

대충 두 가지 정도가 떠오르네요.

- 두 개의 다이얼로그에서 받은 comm 클래스 포인터가 서로 다른것이다.

- 또는, 동일한 포인터를 넘겨주긴 했는데 먼저 받은 놈이 그걸 사용한 후 메모리를 해제해 버렸다.

디버거를 사용하면 쉽게 찾아낼 수 있습니다. 넘겨받은 포인터값, 생성자, 소멸자 등에 브레이크 포인트를 걸고 테스트해 보세요.

--

momark의 이미지

양쪽 클래스 헤더에 각각 CComm* m_com;을 써줬는데 서로 다르다고 성립이 되나요?
메모리를해제하는 부분은 없는것 같은데

mirheekl의 이미지

포인터에 선언한것만 가지고는 해당 포인터에 뭐가 들어갈지 알 수 없으니 직접 그 순간을 봐야 한다는 겁니다.

메모리를 해제하는 것도 마찬가지죠. 소멸자에 브레이크 포인트를 걸어보면 알 수 있습니다.

기타 여러 가지 이유로 포인터 변수 자체가 변경되거나 사용하던 메모리 영역이 해제되거나 침범받을 수 있습니다.

눈으로 확인하는 디버깅도 중요하지만 라이브 디버깅도 중요합니다.

어차피 소스코드를 올려주신 것도 아니니 제가 제시한 것들도 그저 후보들일 뿐입니다. 확실히 알려면 라이브 디버깅을 해봐야죠.

--

momark의 이미지

포인터로 다시 불러서 변수를 같게 하니까 되네요 덕분에 해결했습니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.