Debug할 때 "Condition..." 또는 "When Hit..."에서 string::empty() 같은 함수들의 return 값은 기대한 결과를 반환하지 않는다.
그러나 변수의 값은 결과를 기대할 것도 없이 그냥 그 값이다.
그래서 "Condition..."에서 다음과 같이 함수가 아닌 변수로 조건을 걸면 문자열이 0인 경우 break가 잡힌다.
>> strWhat._Mysize == 0
이왕 정리하는 김에 유용한 것들을 기록해 본다.
(MS STL 기준. Debug mode)
string
_Bx : 실제 인스턴스
_Bx._Buf : 문자들이 16개 이하일 때의 저장소 (\0 포함)
_Bx->_Ptr : 문자들이 16개 초과일 때의 포인터
_Mysize : 문자열 길이
max_size() : 0xffffffff. 4294967295개를 넘을 수 없다.
_BUF_SIZE <= _Myres : true -> _Buf / false -> *_Ptr
list
_Myhead : Head node의 포인터
_Mysize : list의 element 개수
max_size() : 0x3fffffff. 1073741823개를 넘을 수 없다.
vector
_Myfirst : 배열의 시작 포인터
_Mylast : element sequence의 끝 포인터. size와 관련.
_Myend : 배열의 끝 포인터. capacity와 관련.
_Mylast - _Myfirst : 배열의 크기. (_Mysize가 없다)
map / set
_Myhead : 헤드 노드 포인터
_Mysize : 크기
Note.
리스트의 erase함수는 list의 장점을 좀 못 살리고 있다.
element들을 delete하기 위해 while문을 돌면서 하나하나 삭제 한다.
음... 따로 방법이 없나? -_-;;
덕분에 Size를 바로 구할 수 있는 점은 좋지만... 누가 size를 자주 구할 목적으로 list를 사용할까?
'Debug' 카테고리의 다른 글
Magic debug values (0) | 2011.09.03 |
---|---|
재컴파일 없이 프로그램 실행 로직 제어하기 (0) | 2010.08.20 |