본문 바로가기
C++

[C++/MFC] CString 문제? 출처 모음

by juheeL 2021. 8. 13.

 

댓:

CString 처럼 MFC 클래스로 구성된 클래스 내부에는 공유하여 사용하는

데이터가 존재할 수 있어요. 그런데 멀티 쓰레드에서 이런 클래스들을 사용하다가

잘못해서 동시에 두개 이상의 쓰레드가 공유 데이터에 무언가를 하려고 하면

프로그램이 뻗어버릴 수 있어요 =ㅁ=... 그러니까 CString 쓰지마시고,

char 배열 크게 잡아서

 

출처: <http://www.tipssoft.com/bulletin/board.php?bo_table=QnA&wr_id=21644>

 

 

 

댓:

CString은 내부적으로 static 문법을 사용하기 때문에 클래스 내부에서 공유되는 자원으로

인하여 멀티 스레드에서는 사용되지 못합니다.

 

그렇기 때문에 싱글 스레드 역시 메인 스레드와 다른 추가적인 스레드를 사용하는이기 때문에

사용하시면 안됩니다.

CList나 CArray 등 해당 클래스에서 static 문법을 사용하는 지를 확인하셔야할 것 같습니다.

 

출처: <http://www.tipssoft.com/bulletin/board.php?bo_table=QnA&wr_id=27439>

 

 

 

글 :

[MFC]Thread와 말썽쟁이 CString

출처: <https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=lds3800&logNo=130120307269>

 

 

 

글 :

복사생성자 VS 대입연산자 중복

출처: <https://blog.naver.com/PostView.naver?blogId=khs01016&logNo=51859631&redirect=Dlog&widgetTypeCall=true&topReferer=http%3A%2F%2Fwww.tipssoft.com%2F&directAccess=false>

 

 

 

 

 

추후 다시 이슈 확인 시 구글검색 '메모리릭 cstring'

CString의 GetBuffer(), GetLength() 사용시 메모리 릭 발생

출처: https://purism.tistory.com/entry/CString의-GetBuffer-GetLength-사용시-메모리-릭-발생 [안녕¿]

 

[MFC] Thread 사용 중 원인을 알 수 없는 memory leak 발생 시 CString을 확인해보자.

https://cherrycloud.tistory.com/41

 

[MFC] 초보자가 많이 실수하는 문자열 리턴

https://koreatech.tistory.com/entry/MFC-%EC%B4%88%EB%B3%B4%EC%9E%90%EA%B0%80-%EB%A7%8E%EC%9D%B4-%EC%8B%A4%EC%88%98%ED%95%98%EB%8A%94-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%A6%AC%ED%84%B4

 

 

4. CString 클래스

그래서 MFC에서는 문자열을 편하게 관리할 수 있도록 CString 클래스를 제공합니다. 3번에서 설명한
TW_String 클래스와는 비교도 안될 정도로 많은 기능을 제공하고 다양한 예외 처리 기능을 가지고 있는
클래스라서 초보자들이 사용하면 정말 좋습니다. 하지만 너무 기능이 많고 모든 예외에 대응하다 보니
CString을 너무 많이 사용하면 프로그램의 수행 능력을 저하시키는 원인이 되기도 합니다.

출처 : http://tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=2278