반응형

출처: https://devmachine.blog.me/207239711

 

[C++] new 연산자의 예외 처리에 대한 오해와 진실

※ 대부분의 C++ 개발자들은 new 연산자에 대한 올바른 예외 처리를 하고있지만, 아직까지 잘못된 방법을 ...

blog.naver.com

※ 대부분의 C++ 개발자들은 new 연산자에 대한 올바른 예외 처리를 하고있지만, 아직까지 잘못된 방법을 사용하시는 분들도 종종 있는것 같아서 간단하게 정리해서 올려봅니다.

 

 

new 연산자의 예외 처리에 대한 오해

  

얼마전에 누군가가 작성한 소스에 다음과 같은 코드가 포함되어 있는 것을 발견하였습니다. 약 100MB 정도의 메모리를 할당한 다음 메모리 할당에 실패하였을 경우, 이에 대한 예외 처리를 하는 코드였죠.

 

 

char* ptr;
ptr = new char[100 * 1024 * 1024];
if (!ptr)
{
    ...
}

 

 

얼핏 보면 이 코드는 전혀 문제가 없어보이지만, 사실 아주 큰 문제점을 가지고 있는 코드입니다. 왜냐하면 new 연산자가 실패한다고 하더라고 절.대.로. if 블록 안으로 진입하지 않기 때문이죠. 만약 이 코드를 보고도 전혀 이상한 점을 느끼지 못하셨다면...잠시 반성의 시간을 가지도록 합시다. ^^; (사실 new 연산자에 의한 메모리 할당이 실패하는 일은 거의 없기 때문에 위와 같은 코드에 대한 검증 없이 무심코 넘어가 버리는 경우가 많습니다.)

 

C++ 표준에 따르면 new 연산자의 메모리 할당이 실패할 경우 std::bad_alloc 타입의 예외를 발생시키도록 되어있습니다. 결국 위 코드에서도 메모리 할당에 실패하면 ptr 변수에 NULL이 리턴되는 것이 아니라 std::bad_alloc 타입의 예외가 발생하고, 이 예외는 어디에서도 처리되지 않아 프로그램이 비정상적으로 종료되겠죠. 그렇다면 new 연산자의 메모리 할당이 실패했을 경우의 예외 처리를 제대로 구현하려면 어떻게 해야할까요?

 

 

new 연산자의 올바른 예외 처리 방법

  

1. try-catch

 

당연한 얘기지만 가장 먼저 생각해 볼 수 있는 방법은 try-catch 구문을 이용하여 예외를 처리해주는 방법입니다. new 연산자를 사용하는 코드를 try 블럭으로 묶어주고, catch 구문에서 std::bad_alloc 타입의 예외를 처리하도록 구현하면 되겠죠.

 

 

char* ptr;
try
{
    ptr = new char[0x7ffffffe];
}
catch (std::bad_alloc e)
{
    cout << e.what() << endl;
}

 

 

참고로 MFC 환경에서는 std::bad_alloc 타입이 아닌 CMemoryException 타입의 예외를 발생시키기 때문에(operator new가 오버로드 되어있습니다) 아래와 같이 구현하셔야 합니다. 

 

 

char* ptr;
try
{
    ptr = new char[0x7ffffffe];
}
catch (CMemoryException* e)
{
    ...
}

 

 

2. new(std::nothrow)

 

'나는 try-catch 구문을 이용한 예외 처리 스타일이 영 맘에 들지 않는다' 하는 분들을 위한 방법입니다. new 대신 new(std::nothrow) 를 사용하면, 메모리 할당에 실패했을때 예외를 발생시키지 않고 NULL을 리턴하게 됩니다(이것 역시 C++ 표준에 명시되어 있습니다). 결국 new(std::nothrow) 를 사용할 경우에는 맨 위에서 작성했던 잘못된 코드와 유사한 스타일로 예외 처리를 구현할 수 있습니다.

 

 

char* ptr;
ptr = new(std::nothrow) char[0x7ffffffe];
if (!ptr)
{
    ...
}

[출처] [C++] new 연산자의 예외 처리에 대한 오해와 진실|작성자 데브머신

 

'language > C++' 카테고리의 다른 글

LPSTR, LPCSTR, LPTSTR, LPCTSTR , LPWSTR, LPCWSTR 의미  (0) 2008.12.08
반응형

-> 여러방법이 있지만, 아래 방법이 제일 쉽고 간단함.

1. 아웃룩 종료

2. ost 파일을 원하는 위치로 이동

3. cmd.exe를 실행하여 아래 명령어 입력

   └ mklink "ost 파일명" "저장경로/파일명"

       예)mklink test.ost "d:\backup\test"

4. 아웃룩 실행

'문서 편집 > OUTLOOK' 카테고리의 다른 글

대화 보기  (0) 2016.01.19
아웃룩 폴더 삭제  (0) 2014.05.19
아웃룩으로 전화걸기  (0) 2014.02.21
첨부파일 첨부하는 방법 2가지  (0) 2013.01.17
첨부 파일 빼먹고 메일 보내는 실수 방지 방법  (0) 2013.01.17
반응형

출처: thrillfighter.tistory.com/269

 

엑셀 날짜 계산(특정일로부터 경과한 기간) DATEDIF 함수 활용

DATEIF 함수를 활용해서 특정일(생일, 기념일 근무 시작일) 로부터 현재, 또는 특정 날짜까지 일수, 개월 수, 날짜(년, 개월, 일)이 지났는지 알아볼 수 있다. 2015/07/06 - [엑셀] - 엑셀 날짜 함수 기초

thrillfighter.tistory.com

"=DATEDIF(시작일, 종료일, 옵션)"

- 시작일, 종료일: 셀 속성을 날짜로 변경

- 옵션

 └ "Y": '년'으로 계산

 └ "M": '월'로 계산

 └ "D": '일'로 계산

https://thrillfighter.tistory.com/269

 

엑셀 날짜 계산(특정일로부터 경과한 기간) DATEDIF 함수 활용

DATEIF 함수를 활용해서 특정일(생일, 기념일 근무 시작일) 로부터 현재, 또는 특정 날짜까지 일수, 개월 수, 날짜(년, 개월, 일)이 지났는지 알아볼 수 있다. 2015/07/06 - [엑셀] - 엑셀 날짜 함수 기초

thrillfighter.tistory.com

https://excel.knowhowho.com/base/%EB%8B%A4%EC%9D%8C%EB%8B%AC-%ED%95%A8%EC%88%98-edate-1%EA%B0%9C%EC%9B%94-%EB%8D%94%ED%95%98%EA%B8%B0-%ED%95%A8%EC%88%98/

 

다음달 함수, EDATE 1개월 더하기 함수 - 엑셀 노하우 Who?

다음달 함수 EDATE. 1개월 더하기 함수 예제를 통해 EDATE 함수가 어떻게 동작하는지 확인하겠습니다. 매월 말일에 대한 처리도 완벽하게 되고 있음을 예제를 통해 확인하고, 실제 업무에서 어떤 방

excel.knowhowho.com

https://peterpan77.com/excel-function-eomonth

 

엑셀의 EOMONTH함수의 사용방법 – 말일 구하기

EOMONTH함수란?End Of MONTH의 줄임말로서 시작일을 기준으로 지정된 월수만큼의 이전 또는 이후의 월말을 시리얼값으로 계산합니다. 28일, 30일, 31일에 끝나는 달도 정확한 날짜를 표시합니다.날짜의

peterpan77.com

https://xlworks.net/excel-function-days/

 

DAYS 함수 - 날짜 사이의 차이, 일수 구하기 | 엑셀웍스

엑셀의 DAYS함수는 두 날짜 사이의 차이, 즉 경과일수를 구하는 함수인데 2013버전부터 새로 도입되었다. DAY라는 이름이 비슷한 함수가 있는데 이 함수는 날짜값에서 날짜부분만 숫자로 추출하는

xlworks.net

https://blog.naver.com/ellydwsong/222585053574

 

[엑셀] n개월 뒤 날짜 계산 함수: EDATE, EOMONTH

날짜 계산은, 사람이 생각하기엔 굉장히 쉬운데 막상 컴퓨터가 자동 계산하도록 하려면 어려운 경우가 많다...

blog.naver.com

https://in.naver.com/jiwoo/contents/373565440648064?query=EOMONTH 

 

[네이버 인플루언서] EADTE, EOMONTH 함수

=EDATE(날짜, 월) : 날짜에서 월을 더한 날짜의 일련번호를 반환한다. ▶ EDATE(날짜, 월) 출근일[C3]에서 수습기간[B3]을 더한 날짜를 반환한다. ▶결과 출근일인 '2022-08-21'에서 수습기간 '3'개월을 더

in.naver.com

 

반응형

- 안드로이드 에뮬레이터(Emulator) 앱 설치

  bluestacks-app-player.kr.uptodown.com/windows/download

'PC > 유틸' 카테고리의 다른 글

무료 순서도 프로그램  (0) 2019.01.13
파일 탐색기용, 검색용  (0) 2018.08.20
업무 유용 프로그램  (0) 2018.08.20
[유틸]파일 검색 유틸 Everything  (0) 2013.02.26
반응형

1. 심플 다이어그램

- 윈도우10에서는 기본적으로 설치는 막으나, 강제 설치 가능

- 디자인은 깔끔하지만, 사용법이 직관적이지 않음. 익숙해지면 좋을 듯 함.

- 프로그램이 조금 느린 느낌임.

- 다운로드 사이트: https://software.naver.com/software/summary.nhn?softwareId=GWS_003147

 

심플 다이어그램

다이어그램, 플로우차트를 작성하는 프로그램

software.naver.com

- 참고사이트: http://kinfolksoft.com/%EC%8B%AC%ED%94%8C-%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8/

 

심플 다이어그램 - 무료 프로그램

소개 플로우차트(Flow Chart), 다이어그램(Diagram), 모식도 등을 작성, 편집합니다. 만든 다이어그램을  저장하며 이를 인쇄 및 다른 이미지로 출력할 수 있습니다.   사용 환경 윈도우 응용 프로그��

kinfolksoft.com

 

 

2. dia diagram

- 사용법 진관적임.

- 문서 등으로 복사할 때, 깔끔하지 않음. 한글 입력 시, 불편함

  참고: https://m.blog.naver.com/PostView.nhn?blogId=kicpahsh&logNo=220223734821&proxyReferer=https:%2F%2Fwww.google.com%2F

 

플로우차트 작성프로그램 Dia 한글입력 방법

Dia는 다이어그램 작성용 오픈소스SW입니다. Dia 최신버전 : http://live.gnome.org/Dia/Downloadwin...

blog.naver.com

- 다운로드 사이트:http://dia-installer.de/

 

Dia draws your structured diagrams: Free Windows, Mac OS X and Linux version of the popular open source program

Overview Dia is a program to draw structured diagrams. Dia 0.97.2 Free Download Windows, 60 languages (20 MB) Release notes Installer 0.97.2-2 Contains Dia 0.97.2 with updated base libraries. Dia 0.97.2 A bugfix and maintenance release. A lot of translatio

dia-installer.de

 

'language > 알고리즘' 카테고리의 다른 글

시험사이트  (0) 2019.02.17
반응형

윈도우에서 파일을 열 때 원하는 프로그램으로 열 수 있도록 설정하는 방법

 

https://mulmeclass.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B010-%EA%B8%B0%EB%B3%B8%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%84%A4%EC%A0%95%EB%B2%95-2%EA%B0%80%EC%A7%80

 

윈도우10 기본프로그램 설정 2가지 tip

윈도우10 기본프로그램 연결은 어떻게 하는가? 컴퓨터에서 파일을 열어 볼 때마다 기본프로그램 설정이 되어 있지 않으면 매번 연결할 때마다 많이 번거로울텐데요. 이번 시간에는 이러한 절차

mulmeclass.tistory.com

 

'컴퓨터 팁' 카테고리의 다른 글

virtual pc com 설정  (0) 2013.07.16
webzip  (0) 2011.07.12
키보드 입력이 이상할 때  (0) 2009.06.29
flec006...CPU 사용 100% 바이러스 치료 방법  (0) 2008.10.09
윈도우 계열 컴퓨터 단축키  (0) 2008.10.09
반응형

tftp 프로그램 다운로드: http://tftpd32.jounin.net/

 

TFTPD32 : an opensource IPv6 ready TFTP server/service for windows : TFTP server

  The industry standard TFTP server  Tftpd64 is a free, opensource IPv6 ready application which includes DHCP, TFTP, DNS, SNTP and Syslog servers as well as a TFTP client. The TFTP client and server are fully compatible with TFTP option support (tsize, blo

tftpd32.jounin.net

[실행 순서]

 

1. window에서 tftp 실행

   - 설치가 아님. 다운받아서 바로 실행하면 됨.

   - current directory: 복사할 파일 경로로 정하면 됨

   - server interfaces: tftp가 실행되고 있는 pc ip로 하면 됨.

 

2.임베디드리눅스에서 tftp로 파일 가져오기

   - tftp -g -r file명 ip주소

     복사 메시지 제거 방법: tftp -g -r smt_t283 ip주소 1>/dev/null 2>/dev/null

   

반응형

https://unix.stackexchange.com/questions/52667/file-permission-issues-with-shared-folders-under-virtual-box-ubuntu-guest-wind

 

파일 접근권한을 얻는 일반적인 방법은 VirtualBox 로 공유폴더를 자동마운트시키고, (그렇게 하면 /media/sh_디렉토리명 으로 보일 것) 사용하는 우분투 사용자를 vboxsf 그룹에 추가하는 것입니다. (명령은 루트 권한으로 실행합니다. #)

 

# usermod -aG vboxsf <youruser>

 

그러니까 vobxsf 그룹이 풀액세스 권한을 갖습니다. 사용자를 이 그룹에 소속시키면, 전체접근권한을 얻게 됩니다.



출처: https://daewonyoon.tistory.com/257 [알락블록]

'PC > 기타' 카테고리의 다른 글

바탕화면 아이콘 텍스트 그림자 없애기  (0) 2010.09.15
반응형

vi에서 ":%!xxd"

http://mwultong.blogspot.com/2007/08/vim-vi-hex-viewer-hex-editor-xxd.html

'OS > LINUX' 카테고리의 다른 글

socket 옵션  (0) 2021.10.09
리눅스 입력한 내용 검색  (0) 2021.03.16
리눅스 TCP 데이터 덤프  (0) 2019.03.18
printf 색깔 수정  (0) 2019.01.02
TIP  (0) 2018.10.25
반응형

1. tcpdump

- 예) tcpdump -X -i eth0 host 192.168.1.111

  

11:29:26.464679 IP localhost.localdomain.33112 > 192.168.1.111.newoak: Flags [.], ack 1345, win 265, options [nop,nop,TS val 941886908 ecr 7404959], length 0

        0x0000:  4500 0034 66f7 4000 4006 4fa5 c0a8 0168  E..4f.@.@.O....h

        0x0010:  c0a8 016f 8158 0fa1 db3a b9b6 d972 7f9c  ...o.X...:...r..

        0x0020:  8010 0109 2ea2 0000 0101 080a 3824 0dbc  ............8$..

        0x0030:  0070 fd9f   


[참고사이트]

- 설치: https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_tcpdump_%EC%84%A4%EC%B9%98 

https://www.ibm.com/support/knowledgecenter/ko/ssw_aix_71/com.ibm.aix.cmds5/tcpdump.htm

https://dany-it.tistory.com/100

https://moyaria.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4%EC%97%90%EC%84%9C-tcpdump-%EB%AA%85%EB%A0%B9%EC%96%B4%EC%9D%98-%EC%98%B5%EC%85%98-%EC%A0%95%EB%A6%AC

http://www.loelab.com/tcpdump-%EC%82%AC%EC%9A%A9%EB%B2%95/

http://blog.naver.com/PostView.nhn?blogId=romanst&logNo=220628324979&parentCategoryNo=&categoryNo=10&viewDate=&isShowPopularPosts=false&from=section 

https://idchowto.com/?p=6644


'OS > LINUX' 카테고리의 다른 글

리눅스 입력한 내용 검색  (0) 2021.03.16
linux hex viewer  (0) 2019.03.22
printf 색깔 수정  (0) 2019.01.02
TIP  (0) 2018.10.25
RTS(real time signal)  (0) 2018.07.11

+ Recent posts