메모리 동적할당 문제

thinga3의 이미지

저는 c언어를 이용해서 코딩을 하고 있는데,
한가지 문제가 있는데 이를 해결할 방법을 알지 못해 여쭤봅니다.

저는 주로 포인터 사용할때 malloc을 이용해서 동적할당을 합니다.
근데 여러개의 포인터를 사용하게 되면 자꾸 주소가 겹치는 문제?가 발생해서
제가 원하지 않는 값들이 나옵니다.
(저는 맥을 사용하는데, 예전에는 이정도까진 아니었던거 같은데 os업데이트를 하고 나니 뭔가 심해진 것 같습니다.)
예를 들면
float *ecut, *ncut, *zcut;
float *ebs, *zrm;

ebs = (float *)malloc((ft-bt)*sizeof(float));
zrm = (float *)malloc((ft-bt)*sizeof(float));

ecut = (float *)malloc(block*sizrof(float));
ncut = (float *)malloc(block*sizrof(float));
zcut = (float *)malloc(block*sizrof(float));

와 같이 동적할당을 합니다.
컴파일은 문제 없이 되는데, 실행을 하게 되면
계산 중에 자꾸 주소가 겹쳐서 원하지 않는 값들이 나오게 됩니다.
이런 경우 어떻게 해결해야 하는지 알고 싶습니다.

라스코니의 이미지

아래 올리신 코드를 보았지만 debug를 해보시기를 바랍니다.
step into로 따라가다 보면 문제가 해결될 겁니다.

그리고 절대로 컴파일러 문제는 아닙니다.

darklycos의 이미지

제 경험으로는 저렇게 malloc을 붙여서 실행하게 되면 메모리 주소가 연속적으로 이어지는 경우가 많습니다. 특히 aligned allocation을 하면 저런 경우가 많이생깁니다.
해결 방법은 주소가 겹처지는 부분을 보시면 분명히 메모리 접근을 할 때 할당한 메모리 용량을 넘어가는 경우가 있을것입니다. 보통 이런경우 memory 에러가 나서 프로그램이 죽게되는데 간혹 메모리가 빽뺵히 주소에 가득차있는경우 다른 메모리 할당영역을 건드리기도 합니다.
두서없이 글을 썼는데 해결에 도움이 됐으면 좋겠네요 ^^;;

thinga3의 이미지

감사합니다.

thinga3의 이미지

감사합니다.

댓글 달기

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