RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'auto_ptr'에 해당되는 글 1
2007/03/05  auto_ptr  
Programming/C++  2007/03/05 16:52
원본 : http://www.debuglab.com/knowledge/autoptr.html

1.요약

영리한 포인터의 일종으로 STL에서 지원해주는 클래스입니다.


2.본문

학교에서 auto_ptr을 배우면서, 이런걸 왜 만들었나하는 생각을 했었습니다. 하지만 여러분은 그 용도를 다 아실테고 사용법을 보죠.

1    #include <crtdbg.h> 

2    #include <memory> 

3    using namespace std; 

4     

5    void Func() 

6    { 

7        auto_ptr<char> p( new char [1]); 

8    //    char* p = new char [1]; 

9     

10        throw 3; 

11     

12    //    delete[] p; 

13    } 

14     

15    int main(int argc, char* argv[]) 

16    { 

17        try 

18        { 

19            Func(); 

20        } 

21        catch(int) 

22        { 

23     

24        } 

25     

26        _CrtDumpMemoryLeaks( ); 

27        return 0; 

28    } 

소스 설명 들어갑니다.

1    #include <crtdbg.h> 
메모리 릭을 가르쳐주는 CRT 함수를 사용하려고 포함

2    #include <memory> 

3    using namespace std; 

auto_ptr은 memory에 선언되어있고 STL 입니다.

7        auto_ptr<char> p( new char [1]); 

이 글의 주제.
p 는 스택에 생성된 객체이기 때문에 함수의 종료시에 소멸자가 호출되고 소멸자 안에서는 힙에 생성된 메모리 블럭을 해제해주겠죠.

가장 중요한 점은 exception이 발생한 경우라도 소멸자의 호출이 보장된다는 사실입니다.( 이는 메모리 릭이 발생하는지 안하는지 보면 알겠죠..)

10        throw 3; 
강제로 exception 발생
26        _CrtDumpMemoryLeaks( );
메모리 릭이 있는 경우 덤프


3.예제



4.참고

The C++ Programming Language 3E



- 2001.08.13 Smile Seo -
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/03/05 16:52 2007/03/05 16:52
http://www.webdizen.net/blog/trackback/2679
[로그인][오픈아이디란?]
webdizen:이 세상에 존재하는 모든 데이터를 체계화하고, 효과적으로 분석하는 그 날까지 이 재미난 연구를 계속해 나갈 생각입니다.

현재 OLAP, Data Warehouse, Data Mining, Cloud Computing, MapReduce, Data Modeling에 대해서 연구하고 있습니다.
이 세상에 존재하는 모든 데이터를 체계화하고, 효과적으로 분석하는 그 날까지 이 재미난 연구를 계속해 나갈 생각입니다. 현재 OLAP, Data Warehouse, Data Mining, Cloud Computing, MapReduce, Data Modeling에 대해서 연구하고 있습니다.
전체 (3017)
Webdizen (144)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Cloud Computing (3)
Programming (807)
Data Modeling (0)
Database (105)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (80)
Security (91)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
«   2010/09   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
  1. yundream의 프로그래밍 이야기  03/10
    printf,scanf를 이용한 형식화된 입출력
  2. 은마군의 나태블록  2009
    파일 열기/저장하기 CFileDialog
  3. 상우 :: Oranzie's BLOG  2008
    World IT Show 2008
  4. 3인3색  2008
    cvs서버 설치하기
  5. PHP와 Web 2.0  2007
    속속 공개되는 Google Chart Maker
  1. 2010/09 (1)
  2. 2010/08 (2)
  3. 2010/07 (2)
  4. 2010/05 (1)
  5. 2010/04 (2)