본문 바로가기

Programming/C & C++43

반올림 함수 반올림 함수는 c에서 기본적으로 지원하지 않는다. 자주 사용되는 관계로 아래와 같이 정리해보았다. /// /// round function /// ex) num= 10.2465, where=3 -> 10.25 /// ex) num=-10.2465, where=3 -> -10.24 /// double round(double num, int where) { double roundedNum = num * pow(10, where-1); roundedNum += 0.5; roundedNum = (roundedNum>0)?floor(roundedNum):ceil(roundedNum); roundedNum *= pow(10, -1 * (where-1)); return roundedNum; } 2011. 1. 10.
Core 파일을 gdb에 이용하기 $ gdb -c [core file name] 2010. 8. 9.
Memory Leak Issues boost::shared_ptr swap() : Leak 원인 찾느라 시간좀 걸린 녀석. 트리나 리스트 같이 객체 내에 자신의 포인터를 가지고 있는 자료형을 이용중이었는데, 특정함수서 tmp 변수로 작업후 원 object 와 swap 하는 과정에서 내부 list 에 있는 shared_ptr 이 제대로 삭제가 안되었거나 cyclic issue가 발생한 것 같다. 대입연산자 = 로 바로 해결했음. 2010. 7. 8.
boost::filesystem 을 이용하여 directory size 알아내기 #include ilesystem.hpp> #include using namespace std; namespace bfs = boost::filesystem; uintmax_t dirSize(const std::string& dirPath, bool recursive = false) { uintmax_t tmpSize = 0; bfs::directory_iterator dirIter = bfs::directory_iterator(dirPath); bfs::directory_iterator dirIterEnd; for(; dirIter != dirIterEnd; dirIter++) { if ( bfs::is_directory(*dirIter) ) { if ( recursive ) tmpSize += dir.. 2010. 5. 26.