new에서 Segmentation fault
글쓴이: purewell / 작성시간: 일, 2004/02/08 - 9:54오후
일단 검색으로 찾은 URL이긴 하지만 모든 경우가 잘 체크되어 있습니다.
http://bbs.kldp.org/viewtopic.php?t=22834
1. inline 함수는 없습니다.
2. -On 옵션은 쓰지 않았습니다.
3. memset/memcpy 종류 함수를 쓰지 않습니다.
4. malloc/free는 쓰지 않습니다. (new/delete만 씁니다)
5. 바운드를 넘어선 데이터 쓰기를 하지 않습니다.
6. RedHat9/kernel-smp-2.4.20-28.9
7. libstdc++-3.2.2-5, gcc-c++-3.2.2-5, libstdc++-devel-3.2.2-5
typedef struct tagMyStruct { int msg; int time; } MyStruct, *PMyStruct; ........ PMyStruct SomeFunction(void) { PMyStruct pRet; pRet = new MyStruct; // 여기!! return pRet; }
위의 코드 중에 저 함수를 자주 호출합니다.
그런데 어느 순간(일정치 않음) new 연산자에서
죽습니다.
GDB의 메시지는 다음과 같습니다.
Quote:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1075323008 (LWP 9226)]
0x4207435e in _int_malloc () from /lib/tls/libc.so.6
Forums:
SomeFunction 에 delete 가 없네요.
SomeFunction 에 delete 가 없네요. 어느순간 메모리가 부족해져서 메모리 할당을 못하겠죠 ?
^ -^) SomeFunction에서 delete 하지 않고,So
^ -^) SomeFunction에서 delete 하지 않고,
SomeFunction을 호출한 녀석이 delete 하게 되어 있습니다.
top이나 ps -aux로 메모리 상태 호출하면 0.3%도 채 쓰지 않습니다.
_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz
...
...
재미있는 문제 같은데, 괜찮다면 문제에 대해서 같이 연구해 보고 싶은데,
재미있는 문제 같은데, 괜찮다면 문제에 대해서 같이 연구해 보고 싶은데,
현재로는 정보가 부족해서 어려움이 있네요..
문제가 나는 상황을 별도로 만드실수 있는지요....
아니면, 좀더 자세한 설명을 부탁드립니다.
같은 메모리를 두번 delete하지는 않는지요?new[]와 del
같은 메모리를 두번 delete하지는 않는지요?
new[]와 delete[]는 제대로 쓰이고 있는지요?
다른 메모리 관리 프로그램은 시도해 보셨는지요?
댓글 달기