동적할당 버그

zzlzzh의 이미지

int형 배열 arr을 동적할당 했을때 주소를 건드리지도 않았는데 배열 중간의 값이 변하거나 쓰레기 값이 나옵니다.
그때문인지 invalid next size(fast)라는 오류도 뜨구요.
그냥 동적배열 때려치우고 arr[BUFSIZ]로 바꿔버려서 프로그램을 완성하긴 했는데, 도대체 건드리지도 않는 값이 왜 변하는지 알 수가 없습니다. 혹시 이유를 아시는분 계시나요?

...!의 이미지

바뀔리가 없지요. zzlzzh 님이 뭔가 잘못하신게지요. 정말로 원인을 알고 싶다면 질문을 어떻게 해야할까 생각을 잘 해보고 질문을 다시 작성해보세요.

지재민@Google의 이미지

바뀔리가 없는거 아는데 제가 수정한건

int *arr
MALLOC(arr, int, size); // malloc 매크로

이걸 그냥 동적할당 없이

int arr[BUFSIZ]

이걸로 바꾼것 뿐입니다.
동적할당 했을때 for문 돌면서 값 출력하면 처음엔 잘 뜨다가
재귀함수로 들어가면서 배열 값이 변합니다.
제가 아직 리눅스 gdb는 사용할줄 몰라서 왜 그런지 정확히 못하겠는데
동적할당만 안했다고 실행된다는건 이해가 안되네요.
찾아보니 gcc 컴파일러들에도 버전에 따라 여러 버그가 있다고 보았습니다.
그래서 혹시 버그가 아닌가 생각했는데... 확실하진 않으니 죄송하네요

ymir의 이미지

기계는 정직합니다. 사람이 시킨 일 외에는 하지 않죠.
코드가 그렇게 동작한다는 거는 만든 사람이 그렇게 만들라고 시킨거고..
그런 의도가 아니었다고 이야기 한다면, 의도와는 다르게 코드가 잘못 만들어졌다는 것입니다.

컴파일러도 사람이 만든거니 문제가 있을 수도 있다고 할 수 있겠지만..
어지간히 초 구닥다리 버전을 쓰는게 아니라면..
일단 발견될 수 있는 문제들은 다 처리되어서 없다고 보는게 맞겠지요.
일상 생활하다가 막 얻어 걸리는 수준의 문제들은 아니라는 뜻입니다.

우선적으로 내가 그렇게 동작하도록 프로그램을 만들었구나.. 라고 생각하시고..
다시 코드를 찬찬히 살펴 보세요.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

...!의 이미지

여전히 답을 얻을 수 없는 질문을 하시는군요. https://kldp.org/node/157387를 참고해서 컴파일 후에 어떤 에러를 얻는 지 확인해보시고 그래도 파악이 안되면 코드를 올리세요. 전체 코드가 복잡하다면, 문제를 재현하는 컴파일 작은 코드를 만들어서 올리시구요. 말씀하신 버그가 실제로 있다면 지금 세상이 이렇게 평온할 수 없어요. 난리가 났지요. 큰일나요. gcc/glibc가 얼마나 많은 곳에서 쓰이는지 생각해보세요.

익명 사용자의 이미지

링크가 잘못됐네요. https://kldp.org/node/157387 입니다.

댓글 달기

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