efence에서 No empty slot 0라는 에러메세지는?
글쓴이: icanfly / 작성시간: 수, 2005/03/09 - 5:02오후
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 을 사용했습니다.
그럼...
Forums:


21 라인이for(i = 0; i < r1; ++i)
21 라인이
for(i = 0; i < r1; ++i)
로 되야 할 것 같은데요. (r이 아니라)
아..예 그렇긴한데...그건 그냥 단순한 오타입니다. r1으로 해
아..예 그렇긴한데...그건 그냥 단순한 오타입니다.
r1으로 해도 마찬가지거든요..
T.T
그냥 잊어먹고 있다가 오늘 집에 좀 일찍 들어온 관계로 위 코드에 r,c
그냥 잊어먹고 있다가 오늘 집에 좀 일찍 들어온 관계로 위 코드에 r,c값을
바꿔가면서 컴파일을 해보았는데요.....
r = 30000, c = 10 일때는 에러가 났는데..
r = 3000, c =100 일때는 깨끗하게 실행이 됩니다.
심지어 r = 3000, c=1000 도 잘되는군요.
이거 무슨 조환지? 포인터 배열을 많이 잡으니 에러가 나는군요.
일반변수배열은 더 크게 잡아도 멀쩡하고..
그럼 대충 추측가시는거라도 좋으니....답글을 달아주세요..
Re:
Electric Fence 에서 내부적으로 할당/해제하는 메모리 리스트를 관리하는듯 싶더군요.
그 리스트 갯수가 많아질때 문제가 되는게 아닐까 싶네요
댓글 달기