[C] 해지된 포인터의 메모리 침범 예

- 해지된 메모리 영역을 가지는 포인터(소스에서 src)가 존재.
- 해지된 영역을 다른 곳에서 다시 할당 받아 사용할 경우(소스에서 des)
- 해지된 메모리를 가진 포인터(src)의 사용으로 포인터 주소가 어긋날 수 있는 몇몇 경우의 예.
- 단순히 말하면 같은 메모리 영역에 대해 다른 인터페이스로 접근하면 일어나는 것들이다.
- Ex1의 기본적인 경우이고, Ex2, 3이 유사하게 생길 수 있는 경우...
- Ex3로 비유해서 H**HT***E내의 B**K*T내의 일부 노드를 재할당되었을경우,
  해지된 포인터의 접근으로 저장된 value포인터의 값이 1씩 변할 수 있음.
  (보통 void형의 경우 4, 특정 구조체 형식이라면 해당 크기만큼 증가하겠지만)

* 내용과 별개가 되버렸지만 덕분에 GDB사용법은 꽤 익혔다!!!



#include "stdafx.h"

struct des {
    int        key;
    void*    value;
    des*    next;
};

struct src {
    char*    data;
    int        count;
    bool    isBlock;
};

#include <iostream>
#include <stdio.h>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    // 공통적으로
    // src는 메모리는 해지된 상태에서 해당 영역을 그대로 가지고 있어서 다른 곳을 침범하는 역활이고,
    // des는 src이 가르키는 영역을 할당받게 되어 침범 당하는 역활이다.

    src* Ex1Src = new src;
    des* Ex1Des = (des*)Ex1Src;

    Ex1Des->key        = 0;
    Ex1Des->value    = (void*)0x11111111;        // magic number. 할당된 포인터 대용
    Ex1Des->next    = NULL;

    printf(" Example. 1\n");
    printf(" - Before \n");
    printf(" Ex1Des : %d/%p/%p \n", Ex1Des->key, Ex1Des->value, Ex1Des->next);
    printf(" Ex1Src : %p/%d/%d \n", Ex1Src->data, Ex1Src->count, Ex1Src->isBlock);

    Ex1Src->count++;        // 메모리 침범

    printf(" - After ++\n");
    printf(" Ex1Des : %d/%p/%p \n", Ex1Des->key, Ex1Des->value, Ex1Des->next);
    printf(" Ex1Src : %p/%d/%d \n", Ex1Src->data, Ex1Src->count, Ex1Src->isBlock);


    printf("\n\n");

    des*        Ex2DesArray[4];
    Ex2DesArray[0] = new des;
    Ex2DesArray[1] = new des;
    Ex2DesArray[2] = new des;
    Ex2DesArray[3] = new des;
    src*    Ex2Src = (src*)&Ex2DesArray;

    printf(" Example. 2\n");
    printf(" - Before \n");
    for(int i = 0; i < 4; ++i)
        printf(" Ex2DesArray[%d]'s pointer : %p \n", i, Ex2DesArray[i]);
    printf(" Ex2Src : %p/%d/%d \n", Ex2Src->data, Ex2Src->count, Ex2Src->isBlock);

    Ex2Src->count++;

    printf(" - After ++\n");
    for(int i = 0; i < 4; ++i)
        printf(" Ex2DesArray[%d]'s pointer : %p \n", i, Ex2DesArray[i]);
    printf(" Ex2Src : %p/%d/%d \n", Ex2Src->data, Ex2Src->count, Ex2Src->isBlock);
    

    printf("\n\n");

    des*        Ex3DesArray[4];
    Ex3DesArray[0] = new des;
    Ex3DesArray[1] = new des;
    Ex3DesArray[2] = new des;
    Ex3DesArray[3] = new des;
    src*    Ex3Src = (src*)Ex3DesArray[2];
    Ex3DesArray[2]->key = 1;
    Ex3DesArray[2]->value = (void*)0x11112222;
    Ex3DesArray[2]->next = NULL;

    printf(" Example. 3\n");
    printf(" - Before \n");
    printf(" Ex3DesArray[%d]'s pointer : %p - %d/%p/%d\n", 2, Ex3DesArray[2], Ex3DesArray[2]->key, Ex3DesArray[2]->value, Ex3DesArray[2]->next);
    printf(" Ex3Src : %p %d %d \n", Ex3Src->data, Ex3Src->count, Ex3Src->isBlock);

    Ex3Src->count++;

    printf(" - After ++\n");
    printf(" Ex3DesArray[%d]'s pointer : %p - %d/%p/%d\n", 2, Ex3DesArray[2], Ex3DesArray[2]->key, Ex3DesArray[2]->value, Ex3DesArray[2]->next);
    printf(" Ex3Src : %p %d %d \n", Ex3Src->data, Ex3Src->count, Ex3Src->isBlock);
    return 0;
}


by hellz | 2012/04/14 01:24 | Programming | 트랙백 | 덧글(0)

[REPORT] 성공과 실패를 결정하는 1%의 시간관리

* 내야 하는 줄 알고 열심히 작성했는데, 필요가 없었다 ==;

* 아까우니 블로그에라도 올림... 복사해서 붙여넣으니 띄어쓰기가 엉망이 되었다..

* 다시 수정하는 건 귀찮으니 내용 보전용...



  회사 생활의 자잘한 팁 안내서  제목만 살펴보면 흔히 일컬어지는 1%들의 특이한 시간 관리법을 연상시키고 있다. 뒷표지에는 세간에 하나의 흐름인 스마트라는 단어를 강조해서 뭔가 혁신적(스마트폰을시작으로 널리 대두되기 시작한 이 스마트란 단어는 일반인에게 기존의 흐름과 다른 새로운 것을 이미지 시키는 측면이 강하다고 생각한다) 시간관리 기법에 소개되는 것을 기대하게 만든다. 뭔가 "읽지 않으면 세상의 흐름에 당신은 뒤쳐질 것이라는 암묵적인 오라"철철 내 풍기는 책으로 보였다.

 

  개인적으로 스마트라는 단어는 싫어하는 편이다. 왜냐면 스마트폰은 사실 그렇게 혁명적이진 않으니깐 말이다. (예전 PDA폰과 스마트폰 단어가 공존하던 시대에 PDA폰을 지지하는 편이서그럴지도 모르겠다.) 이러한 예감은 적중했고 첫 장부터 이 책은 의미 없는 스마트의 남발로 시작을 열고있었다.   과장되게 대비되고 있는 김대리와 이대리, 이런 3류 콩트에 무슨 의미가 있는가? CM에서 나오는 멋진 배우가 스마트폰으로 척척 처리하며 여유롭게 사는 모습이 지금의 스마트폰을 사용하는 사람의 모습과 일치 하다고 생각하는가? 아니다. 현실은 흔들리는 버스 안에서 손바닥만한 화면에 표시되는 자잘한 뉴스와 블로그를 고개 푹 쑥이고 쭈그리고 살펴보는것에 지나지 않는다. 그리고 각종 현대인의 고질병이 악화되는 원인이 되기까지 하고 있다. 정말 단순히 근래 스마트 열풍에 편승하는 것으로밖에 느껴지지 않는다


  전체적인 내용측면에서도 시간관리서라는 타이틀을 내 걸기에는 내용도 불충분하고 깊이가 전혀 없어 보인다. 단적으로 이 책에 담겨있는 내용은 시간 관리 테크닉이라기보다 회사 생활 팁 모음집이다. 중요한 그 팁을 조차도 짧막짧막하게 별다른 근거 없이 저자의 자화자찬을 기본으로 저자의 잡학 상식에 버무려져소개되고 있다고 느꼈다. 물론 그 중에서도 몇몇 내용에 대해 다시 한번 생각해 본 것도 있는 것은 인정하겠다. (업무 요청 피드백 받기 정도?) 하지만 굳이 본문을 읽어 볼 필요까지는없었다고 생각한다. 아마도 일반적인 성인이라면 이 책의 차례만 훏더 보더라도 대부분의 내용을 이미 파악할수 있지 않을까 싶다. 그러므로 누군가 이 책에 대해 물어보면 나는 이렇게 대답할 것이다. YES2x에서 차례만 보고 오라고... 더불어 비주얼적으로 시간관리하라도 선정하는 서적이 간트차트에 관한 내용은 한마디도 안 나오는 건 이유 또한 궁금하다.  


  이 책의 하일라이트(?)는 뒤 부분의 싱크와이즈의 안내 내용이다. 싱크와이즈의 자세한 설명을 무려 책의 1/6의 지면을 투자해서 설명하고있다는 것이다. 앞에서 그렇게 소개하던(그나마도 책 속의팁 수준이지만) 오피스 계열을 내팽겨 쳐버리고, 책 후미에 등장한 마인드맵에 대한 소프트웨어. 그것도 마이너 한 유료 프로그램의 사용 매뉴얼을 이 정도 분량으로 넣을 가치가 있던 것인가? 과연 이 책은 시간 관리 서적인가, 아니면 싱크와이즈 매뉴얼 인가. 싱크와이즈 부분은 정말 후루룩 넘겨버렸지만,정말 끝까지 이 책을 정독한 사람이 있다면 끝장을 넘기고 시간관리 서적을 완독했다는 감상이 남아 있기는 할까 싶다.

 

  물론 이러한 가벼운 내용은 사회 초년생이나 취업 준비생을 대상으로 적당한 내용일 수 도 있다. 하지만 아날로그든 디지털이든 도구는 결국 도구일 뿐이다. 그리고 몸이 채화해서 자동적으로 수행하지 못한 지식으로서 알고 있는 도구의 사용법은 실제 업무를 수행하는 데 큰 영향을 주지 못한다고 생각한다. 그러니 아주 얇고 금방 읽을 수 있는 책인 만큼 심심할 때 "훏터"보는 것 정도면 족하다고 생각한다.   이렇게 혹평하는 책이지만, 잘 팔릴 수 있도록 상업적인 요소를 넣은 것은 눈여겨 볼만 하다고 생각하다. 처음에 언급했던 자극적인 제목. 그리고스마트의 강조. 더불어 빌 게이츠가 책에 대한 서평을 한 것 처럼 보이게 하는 뒷표지 레이아웃.(책과 전혀 상관 없다.) 결국 이 책에서 배웠던 가장 큰 교훈은자극적이면 잘 팔린다 정도 되는 듯 하다.

by hellz | 2012/03/26 01:25 | Talk | 트랙백 | 덧글(0)

[ETC] KLDP Wiki

http://wiki.kldp.org/

by hellz | 2012/02/16 16:40 | Programming Site | 트랙백 | 덧글(0)

Windows-Visual Studio에서 Makefile 빌드

1. Path에 추가 VC디렉토리\bin 

2. CMD창 띄우고 makefile이 있는 폴더로 이동

3. vcvars32 실행

4. nmake /f makefile


by hellz | 2012/02/08 11:55 | Programming | 트랙백 | 덧글(0)

[REVIEW] Canon MF3010 레이져 복합기 Scan Review


책값 아낄려고 시작했던 책 스캔이 이젠 취미 아닌 취미를 가지고 있습니다.
지금까지 스캔 기기는 HP PSC 2110.
거의 10년 전에 고심에 고심하며 구입했고 그간 잘 사용했죠.
이걸로 절약한 책값(전문서적!!)만 하더라도 진작에 본전을 뽑았을 겁니다...

스캔이 주 용도라고 해도 종종 인쇄할 일도 있으며, 예전 포스트처럼 직접 제본할 일도 있습니다..
그러나 리필해가며 쓴 카트리지가 한동안 안 썼더니 완전히 가버렸습니다.
그래서 겸사겸사 새로운 기기를 찾게 되었습니다.


그리고 선택된 기기는 Canon MF3010
광고의 스캔속도가 300DPI에 3초라는 문구가 크게 작용했습니다.
HP PSC2110은 150 DPI로 스캔하면 장당 20초는 걸리거든요. (전송 완료로 재스캔 가능까지)
물론 광고 따위 99% 신뢰하진 않았지만 리뷰를 뒤져봐도 구체적은 스캔 성능에 대한 묘사는 없더군요.
그래서 스캔 성능에 집중한 리뷰를 쓰게 되었습니다. 말이 리뷰지 사용기지만요;;


전면 모습입니다. 깔끔한 네모 반듯한 디자인입니다.
주황 테이프의 비밀은 아래에...


나름 깔끔한 후면모습입니다.
전원과 정사각 형태의 USB케이블만 지원하고 있습니다.



상판을 올리면 인쇄된 용지가 나오는 부분입니다.



그리고 판 하나를 더 올리면 토너 부분이 나오게 됩니다.
나름 깔끔하네요.


전면의 용지 트레이가 필요하면 사진처럼 내려서 쓰게 됩니다.



인쇄질 관련 평가는 국내웹에서 많이 찾을 수 있으니 패스하고
원래 용도인 스캔쪽을 살펴보겠습니다.
평면 스케너도 깔끔합니다. 스캔 덮게는 탁 붙어서 여닫을 수 만 있습니다.



일단 광고에는 300DPI로 장당 3초대 라고 광고되고 있지요. 물론 전송시간 불포함이라 명시되었지만요.
그러나 실제 스캔 속도에 포함되는 요소가 하나 더 있지요.
바로 스캔 헤드가 복귀하는 시간입니다. 복귀시간도 3초대라는 거지요.
결국 300DPI 흑백으로 스켄할 경우, 실제 걸리는 시간은 장장 6초~7초정도가 걸리더군요.
물론 약간 아쉽긴 하지만 충분히 빠른 축이기는 합니다.  USB 2.0이라서 복귀동안 전송은 완료되게 됩니다.
복귀시간 3초는 다음 장을 준비하고 스캔키를 누르는 시간과 거의 동일하고 합니다.

가끔 ADF를 쓰면 되지 않냐고 하시는 분이 있긴 한데, 빌린 책 위주라서 ADF는 무리입니다;;
아무튼 기존의 PSC 2110은 24분 애니를 보면서 70장 정도를 스캔뜰 수 있는 반면
MF 3010은 24분 동안 150장 스캔을 뜰 수 있으니 많이 빨라진 편이지요.
광고보고 기대한 5초~6초에는 약간 느리지만 작업속도는 2배이상 빨라졌으니깐요.


그러나 문제가 하나 생기게 됩니다.이미지 센서가 CIS타입이라는 것이죠. (PSC 2110은 CCD)
물론 구입전에 CIS가 포커스 역역이 좁아서 깊은 인쇄는 어렵다는 것은 알고 있었습니다.
하지만 설마 이정도 일줄은 몰랐네요.

저작권이 두려우니 한줄만 샘플로 올립니다. 전 소심하니깐요;;

스캔 시 살찍 밀려서 중간이 약간 뜬 모양입니다. 그렇다고 해도 1mm~2mm 정도겠죠.
하지만 저 퀄리티입니다.. 평판에서 정말 약간만 떠버리면 흐릿해져버립니다.
물론 중간은 약간 신경쓰면 커버할 여지는 조금 있습니다.

그러나 중간의 홈이 깊어진다면 피할 여지가 없어집니다.
물론 그래봐야 1~2글자이니 내용파악에는 별 문제 없겠지만, 읽는데 피곤해지는건 어쩔수 없습니다.
PSC 2110처럼 살짝 어두워지더라도 선명해게 찍히면 보정의 여지라도 있는게, 이걸 짤 없습니다;;
그러고보니 스캐너 덮개는 높이 조절을 할 수 없고 여닫을 수만 있게 되어있었죠. 그게 이유가 있었던 것입니다 --;;
더불어 이 덮개는 완전 고정형이라 분리가 불가능합니다.
모니터 정면에 기기를 두고 작업하면 모니터를 볼 수가 없어요!! 결국 모니터 옆에 두고 스캔해야 하네요.

Scan Review라고 썼지만 색 재현쪽은 패스하렵니다.
컬러 스캔은 용도외거든요...
그냥 가볍게 스캔 속도만을 이야기하자면 스캔은 8~9초대고 헤드복귀는 똑같이 3초정도 걸립니다.
결국 실제시간은 11초~12초대라는 것이죠. (300DPI)


가볍게 결론을 짓자면
만약 CIS라도 광고에 두꺼운 책 스캔이나 덮개 높이를 조절할 수 있는 기능이 있다면 괜찮을지도 모르겠습니다.
하지만 그게 아니라면 CIS 타입은 정말 비추입니다. 더욱히 Canon복합기는 모듈도 비슷할테니 아얘 비추입니다.
한장씩 뜯어서 스캔하거나 ADF로 돌리는 게 아니라면 책 스켄에는 정말 부적합 하네요.
요새 중저가 복합기나 스캐너는 CIS를 주로 쓰고 있습니다.
만약 저 같은 용도로 스캔을 하신다면 이점을 고려해 봐야 할 것입니다.





마지막으로 처음 사진의 주황 테이프의 비밀...
그것은 용지 트레이의 고정용입니다. 설치하며 확인해보니 용지 트레이 한쪽 핀이 부러져 있더군요.
(조각도 없었습니다!!)
왼쪽이 정상부분. 오른쪽이 부러진 부분. 하얗게 변색된거보니 성형불량도 아닌 그냥 부러진 듯..

일단 교환하기는 귀찮고 해서 Canon에 물어보니 해당부분만 보내줄 수 있다고 하더군요.
맘 같아서는 교환하고 싶지만, 상황이 여의치 않으니깐요...
암튼 스캔 성능도 그렇고, 이 부분도 그렇고 Canon 제품에 대한 호감도가 급락해 버렸습니다;;;




솔직히 스캔 성능 생각하면 그냥 팔아버릴까도 고민도 되네요...
그렇다고 딱히 CIS기기들은 대안이 있는 것도 아닌데 말이죠..
브라더 복합기보니 그것도 3초대, 컬러는 4초대라서 좋아보이지만 100DPI라는 것도 걸리고요;;
차나리 약간 느리더라도 2110의 스캐너부분을 개조해서 책 스캔에 특화되도록 개조하는 것도 고려해봐야겠습니다;;




by hellz | 2012/01/22 21:10 | Talk | 트랙백 | 덧글(0)

◀ 이전 페이지          다음 페이지 ▶