efence에서 No empty slot 0라는 에러메세지는?

icanfly의 이미지

      3  int main(void)
      4 {
      5         int i, j;
      6
      7         int r = 30000;
      8         int c = 10;
      9         double **p0 = new double*[r];
     10         double **p1 = new double*[r];
     11         for(i = 0; i < r; ++i)
     12         {
     13                 p0[i] = new double[c];
     14                 p1[i] = new double[c];
     15         }
     16
     17         int r1 = 3000;
     18         int c1 = 20;
     19         double **p2 = new double*[r1];
     20         double **p3 = new double*[r1];
     21         for(i = 0; i < r; ++i)
     22         {
     23                 p2[i] = new double[c1];
     24                 p3[i] = new double[c1];
     25         }
     26
     27
     28         //delete
     29         for(i = 0; i < r; ++i)
     30         {
     31                 delete [] p0[i];
     32                 delete [] p1[i];
     33         }
     34
     35         delete [] p0;
     36         delete [] p1;
     37
     38         for(i = 0; i < r1; ++i)
     39         {
     40                 delete [] p2[i];
     41                 delete [] p3[i];
     42         }
     43
     44         delete [] p2;
     45         delete [] p3;
     46 }

위와 같은 코드를 -lefence 를 주고 컴파일 실행하니까..

ElectricFence Aborting:
Electric Fence: Internal error in allocator: No empty slot 0.

Illegal instruction

라고 나옵니다. 할당량을 좀 줄이니까 별 불평을 하지 않는군요.

무엇이 문제인지....

gcc 3.3.2, efence 2.4.11 을 사용했습니다.

그럼...

doldori의 이미지

21 라인이

for(i = 0; i < r1; ++i)

로 되야 할 것 같은데요. (r이 아니라)

icanfly의 이미지

아..예 그렇긴한데...그건 그냥 단순한 오타입니다.

r1으로 해도 마찬가지거든요..

T.T

icanfly의 이미지

그냥 잊어먹고 있다가 오늘 집에 좀 일찍 들어온 관계로 위 코드에 r,c값을

바꿔가면서 컴파일을 해보았는데요.....

r = 30000, c = 10 일때는 에러가 났는데..

r = 3000, c =100 일때는 깨끗하게 실행이 됩니다.

심지어 r = 3000, c=1000 도 잘되는군요.

이거 무슨 조환지? 포인터 배열을 많이 잡으니 에러가 나는군요.

일반변수배열은 더 크게 잡아도 멀쩡하고..

그럼 대충 추측가시는거라도 좋으니....답글을 달아주세요..

kslee80의 이미지

Electric Fence 에서 내부적으로 할당/해제하는 메모리 리스트를 관리하는듯 싶더군요.
그 리스트 갯수가 많아질때 문제가 되는게 아닐까 싶네요

댓글 달기

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