new와 delete 연산을 무수히 많이해도 괜찮나요?

yjcho의 이미지

제목이 조금 애매한데... 설명드리겠습니다.

C++로 시뮬레이션 프로그램을 만드는데, steady state까지 가려면 엄청나게 프로그램을 오래 돌려야 합니다.

근데 문제는 시간(iteration 횟수)을 적게하면 정상적으로 프로그램이 종료되지만, 시간을 어느 한계점 이상으로 돌리면, 프로그램이 죽어버린다는 겁니다.

한가지 예상하는 문제점이 new와 delete연산을 계속 반복해서 하는 겁니다. 프로그램 내에서 사용하는 메모리는 1MB도 채 안됩니다.

g++에서 heap관리를 어떻게 하는지 모르겠는데, new delete를 반복해서 많이 하다보면, 문제가 발생할 수 잇는지요? 그렇다면 해결 방법은 있나요?

참고로 리눅스에서 g++로 컴파일 하고 있습니다.

익명 사용자의 이미지

메모리 디버거를 걸어서 돌려보시길... c++용도 있는진 모르겠네요...

lovemyin의 이미지

new 와 delete를 반복적으로 호출하면 효율이 떨어지지 프로그램이 죽고 그러지는 않을 것 같은데요.. 혹시 메모리 누수가 있는건 아닌지...

/***************************************************
* 가장 심플한 것이 가장 아름다운 것이다.
***************************************************/

pizza1977의 이미지

new와 delete를 많이 해서 프로그램이 죽으면 살아있는 프로그램은 하나도 없을 것 같습니다. 이건 무한 루프를 돌리면서 반복적으로 new와 delete를 해보면 알수 있구요. 아무래도 다른 로직에서 죽는것 같은데요.

-------------
포탈이는 불사신

saxboy의 이미지

FAQ 입니다. malloc() 에서 Segmentation Fault 가 났어요... 또는 집에서 리눅스로 했던 숙제를 학교 스팍에서 컴파일했더니 죽어버려요... 와 같은 문제이지요. 절대 OS나 라이브러리를 의심하시지는 마시기 바랍니다.

아마 어딘가 틀림없이 new로 받은 버퍼 또는 그 앞 뒤로 몇바이트 부근을 overwrite 하는 부분이 있을 것입니다. 1바이트라도 덮어쓰면 문제가 되는 경우가 꼭 생깁니다.

메모리디버거를 애용하세요. :-)

댓글 달기

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