프로그램 수행중..

harisoo의 이미지

제가 프로그램을 하나 만들어서 돌리고 있습니다.

배열을 대략 1kbte정도 사용하는데요..(소스가 워낙 길어서 올리기가 난감하네요ㅠㅠ)

문제는 프로그램이 수행하는 도중에 배열의 주소가 바뀝니다.

프로그램 상에서는 해당 배열의 내용을 참조만 할 뿐 수정은 하지 않거든요.

주소가 갑자기 바뀌게 되어 세그폴트가 되는데 왜 바뀌는지 이유를 알 수가 없습니다.

배열의 크기가 문제인가요?

고수님들의 답변 바랍니다.

감사합니다.

kewlbear의 이미지

주소가 바뀌는 것을 어떻게 확인하셨는지요?

harisoo의 이미지

프로그램 코드내에서 바뀌는 배열의 주소를 계속 프린트 하도록 넣었습니다.

지금 제 코드가 여러개의 배열중 하나의 배열을 선택해서 그 배열의 크기만큼 루프를 돌리고 있는데요.

처음에 세그폴트 날때의 배열의 위치값으로 처음 루프 시작할때 부터 그 위치에 해당하는

배열의 주소를 찍도록 했는데 어느 순간에 갑자기 바뀌더군요 ...

kewlbear의 이미지

배열의 주소를 프린트하는 코드를 좀 보여주세요.
가능하면 전체 구조를 단순화해서 테스트용 프로그램을 만들고 그 코드를 보여주시는 게 좋겠습니다.

익명사용자의 이미지

const 취급이라 주소 수정이 안 될 텐데요?
함수에 인자로 넘겨줄 때 const 지정을 안 하고 포인터로 넘겨줘서 문제가 생긴 게 아닌가 싶습니다...
찾기 힘드시다면 인자를 넘겨줄 때 const로 해주시는 것도 한 방편이 될 것 같습니다.

specerx의 이미지

우선 배열의 주소가 바뀌는 시점을 찾는게 중요해 보입니다.

제 경험에 의하면 이런 경우 대부분이 스택을 깨먹는 경우더군요.

특정 함수 실행 후 돌아 왔을때 즉 스택에서 레지스터로 값을 복원할때 스택에 들어있는 값이 변경되어 있어 값이 바뀌는 경우를 생각해볼 수 있습니다.

------------------------------

saxboy의 이미지

혹시 recursive function이 있다면 의도와 무관하게 수천번 작동하고 있지는 않은지,
배열을 선언한 부분 앞뒤로 포인터나 다른 배열이 있는지, 이부분에 strcpy(), memcpy(), memset() 등등의 쓰기 함수가 엉터리로 작동하고 있는 것은 아닌지등을 확인해보시지요.

적어도 C에서는 모든 문제는 for/while 이 만들어냅니다.

댓글 달기

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