inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

MFC Windows 프로그래밍 - 응용

메시지 루프 다중화

CString의 위험성...???

해결된 질문

149

just kim

작성한 질문수 27

0

안녕하세요. 강의를 거의 다 들었네요.

쓰레드와 DB 꽤 좋은 강의를 듣고 네트워크 강의까지 있길래 수강 신청까지 했어요.

다음 프로젝트가 여러 클라이언트에 저장된 대용량 파일을 서버로 보내고 필요할땐 서버의 데이터를 유튜브 처럼 보는 기능을 구연할껀데 네트워크 강의가 도움이 될거 같아서요.

 

어째건 강의를 끝까지 시청하고 CString을 잘 쓰고 계시더라구요. 저도 CString를 잘 쓰고 있습니다.

 

근데 옛날에 면접 볼때 CString을 어떻게 생각 하시나요? 저는 CString를 쓰면 안된다고 생각하는데 써야될가요? 라는 질문을 받았습니다.

 

제 경험상으로는 MFC로 작성된 Dll의 함수의 인자가 CString로 되어 있을때 WinAPI32 개발하는 저로서는 CString 으로 넘겨 줘야할땐 많이 귀찮죠. WinAPI32는 CString가 지원 안되니깐 그래서 대답을 프로그램의 상호 호완에 문제가 되니깐 쓰면 안되겠죠? 라고 대답했어요.

 

그러니까 면접 관이 다른 이유는 없나요? 라고 다시 묻더라구요. 좀 생각해 낸거가 CString가 문자 지원 변환 기능을 많이 지원 해주니깐 나중 프로그램 개발에 사고력이 떨어지기 땜에 그런거라니깐 고개를 갸웃 거리면서 아니라는 표정을 하더라구요.

 

이 두개도 아니면 CString가 Class니깐 NULL 위험성?? 이건 대답 하지 않았습니다.

 

왜 면접관이 CString를 쓰지 말라고 했을까요?

 

 

mysql mfc multithread win32api

답변 1

1

널널한 개발자

CString 클래스는 매우 특수한 클래스 입니다. 다른 클래스 인스턴스들과 달리 마치 char* 처럼 작동할 수 있도록 메모리 구조를 가지고 있는데다 메모리 운영효율을 위해 내부적으로는 더 큰 메모리를 가지고 있습니다.

만일 CString 클래스 인스턴스 str을 선언한 후 최대 길이가 1000글자 정도 되는 데이터를 저장했다가 100글자 정도되는 문자열로 대체 할 경우(str = "100글자문자열";) 여전히 메모리는 1000글자를 저장 할 수 있는 공간을 유지 합니다. 이게 또 항상그런 것은 아니라 할 수 있는데 아무튼 워킹 메모리 영역을 1000글자 저장 할 수 있는 정도를 유지하는 것은 확실합니다.

이런 특징은 장기간 작동해야 하는 서버 개발 시 큰 문제가 될 수 있습니다. 특정 CString 클래스 인스턴스가 계속 남아 워킹 메모리 크기를 지속적으로 늘리는 문제를 야기할 수 있습니다.

사실 이런 문제는 실무에서 겪어보면 알게 되는 것으로 매우 당황스러운 특징이라 할 수 있습니다. 아마도 이러한 내부적인 특성을 알고 있는지 확인하려 했던 것 같습니다. 참고하시기 바랍니다. 😄

Boolean 컬럼 인덱스와 Cardinality에 따른 실행 계획에 대하여

1

29

1

[실습] WHERE문이 사용된 SQL문 튜닝하기 - 2

0

45

2

JWT토큰 발급 시, subject 값을 다양하게 넣어서 여러 개의 토큰을 만드는 이유

0

37

2

[실습] 인덱스 직접 설정해보기/성능 측정해보기

0

44

2

docker 마지막 실습(app(flask) + mysql) 연동 과정

1

49

2

테스트 코드 작성 시 DTO 새로 작성하는 이유가 궁금합니다.

0

41

1

물리적 모델링 - 실습 (역정규화) 질문

0

45

2

중복 코드와 유지보수성 사이에서 어떤 기준으로 리팩토링해야 할지 궁금합니다

0

33

1

「김영한의 실전 데이터베이스 - 성능 최적화」

0

39

2

aws 관련 질문드립니다.

1

53

3

어플리케이션 실행 후 에러에 관하여 질문 드립니다.

2

57

2

운영환경에 적용해볼 수 없을때...고민입니다 ㅠㅠ

0

52

1

추가 연습 문제 링크 주세요

0

31

0

용어 사전

0

52

2

개념적 모델링 - 실습

0

35

1

유튜브 시연 영상 추가 기능 강의 업로드 계획

0

26

2

DB 설계와 JPA 관련 질문입니다

0

33

1

안녕하세요 선생님

0

36

2

관리자 페이지 질문

0

31

2

윈도우 개발 튜토리얼

0

93

1

MFC_Windows_programming_-_응용_-_인쇄용.pdf 파일이 열리지 않습니다.

0

176

1

수업자료

0

127

2

수업자료

0

112

1

자료 다운로드 관련

0

168

2