글쓴이 보관물: xguru

Solaris 5.8 malloc 후 free 시 bug ?!

Solaris 5.8에서 gcc 3.4.1로 아래 소스를 돌려서 프로세스상황을 살펴보면..

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(int argc, char **argv)
  4. {
  5.   char *a = NULL; char s;int j;
  6.   a = malloc(100000000); // (상태1) 100메가 메모리를 할당. 가상메모리만 할당됨
  7.   printf(“Memory Allocated. Press Enter to Continue\n”);gets(s);
  8.   for (j=0;j<100000000;j++) // (상태2) 강제로 데이터를 쓴다. 실제메모리 할당됨.
  9.     a[j]=‘1’;
  10.   printf(“Memory Writed. Press Enter to Continue\n”);gets(s);
  11.   free(a); // (상태3) 메모리할당을 해제한다.
  12.   printf(“Memory Freed. Press Enter to Exit\n”);gets(s);
  13. }

free(a) 부분에서 분명 실 메모리가 해제되어 , 반환되어야 하나 top 에서는 그대로 남아있는것 처럼 나온다.

메모리 Alloc한 상태 (상태1)
PID USERNAME LWP PRI NICE SIZE RES  STATE    TIME  CPU COMMAND
1093 guru     1 58    0 96M    648K sleep    0:00 .00% MemoryTest

메모리 Write한 상태 (상태2)
PID USERNAME LWP PRI NICE SIZE RES  STATE    TIME  CPU COMMAND
1093 guru     1 58    0 96M    96M  sleep    0:00 .00% MemoryTest

메모리 Free한 상태 (상태3)
PID USERNAME LWP PRI NICE SIZE RES  STATE    TIME  CPU COMMAND
1093 guru     1 58    0 96M    96M  sleep    0:00 .00% MemoryTest

물론 이소스를 리눅스나,윈도우에서 실행하면 모두 제대로 반환 처리 된다.
감시프로세스가 알람을 띄우기 때문에, 이를 원복하도록 하기위해 여기저기 검색을 해봤다.
Doug Lee 가 만든 dlmalloc 이란 소스를 찾아서 malloc 대신 dlmalloc을 쓰면, 제대로 해제가 된다.

메모리 dlmalloc후 Free한 상태 (상태3)
PID USERNAME LWP PRI NICE SIZE RES  STATE    TIME  CPU COMMAND
1093 guru     1 58    0 96M    648K sleep    0:00 .00% MemoryTest

음.. 솔라리스 5.8의 문제인걸까.. 아니면 gcc 3.4.1 에 들어있는 malloc 의 문제인걸까.
가만, 리눅스에 gcc 도 역시 버전은 3.4.1 이다. 그럼 솔라리스에서 이상하게 처리하는건가.. 에구.. 몰것다.
하여튼 dlmalloc 으로 문제는 해결.

남은 문제는.. 이렇게 해도 free 시 가상메모리는 해제가 안된다는것.
리눅스에서는 분명 free(a) 시에 가상메모리까지도 해제가 되는데.. 훔.

Bloglines에서 RSS 예쁘게 보이게 수정완료~

BlogLines 화면

아주 마음에 드는 온라인 RSS Reader 서비스 Bloglines
이젠 아침마다 신문보듯이 한번씩 열어서 다른 블로그의 포스팅을 확인하는것이 일과처럼 굳어져 버렸네요.
[ → Bloglines 소개글 by LikeJAzz , → RSS 설명과 Bloglines 사용법 by jRogue ]

여기저기 소개도 많이 되서, 이젠 정말 많은 분들이 Bloglines를 사용하시는가 봐요.
볼것없는 제 블로그의 RSS 구독자 수도 어느새 스무분이나.. ^^V

같이 애용하는 FireFox용 RSS Reader 인 Sage 는 가볍기는 한데, 텍스트만 추출해서 보여주거든요. 좀 밋밋하죠.
(RSS 컨텐츠부분을 ![CDATA[내용]] 으로 묶어주면 Sage 도 잘 보여주네요 ^^; )
Bloglines 는 RSS의 내용을 거의 가감없이 보여주기때문에 이쁘게 보여줄수가 있더군요.

그래서 지금까지 제 블로그의 RSS 는 트래픽을 줄이기 위해, 각 포스트의 처음 몇백글자만 잘라서 보냈는데요.
그냥 텍스트로만 보기가 너무 심심한거 같아서 , 윗화면처럼 조금 이쁘게 다듬어 봤습니다.

포스트안에 이미지가 있을경우엔 조그맣게 왼쪽에 표시되구요.
글 끝에 부분엔 전체글을 보기위한 글 모두보기 버튼을 달았습니다.

아주 예쁘진 않지만, 나름대로 깔끔해 보이는거 같네요.

어, 아직 등록안하셨다구요 ? 그럼 등록하셔야죠. 밑에 버튼을 콱! 누르시면 됩니다~ ^^;

Bloglines 에 등록하기 BlogLines

제 RSS 새창으로 보기 RSS 2.0