본문 바로가기

Programing/C/C++/STL

[C++]C++의 메모리 영역 http://mumbi.net/292 메모리 영역 특성들과 개체 활동 주기 상수 데이터( Const Data ) 상수 데이터 영역은 문자열과 컴파일 시점에서 값을 알 수 있는 다른 데이터들을 저장합니다. 클래스 형식의 개체는 이 영역에 존재할 수 없습니다. 이 영역의 모든 데이터는 프로그램의 전체 활동 주기 동안 가능합니다. 게다가, 이 모든 데이터는 읽기 전용이며, 이를 수정하면 정의되지 않은 결과를 얻게 됩니다. 기반을 이루는 저장 형식 조차 구현에 의한 전체적인 최적화 대상이 되는 까닭에, 일부만 저장됩니다. 예를 들어, 특정 컴파일러는 부가적인 최적화를 위해 문자열을 겹치는 개체들에 저장하는 것을 선택하기도 합니다. 스택( Stack ) 스택은 자동 변수들을 저장합니다. 개체들은 정의되는 순간에 .. 더보기
[C/C++]메모리 영역 구분 출처 : [직접 서술] 블로그 집필 - 네덜란드 삼촌 프로그램은 크게 instruction(명령)과 data로 구분되며, 일반적으로 4가지, 좀더 세분화 하면 5가지 정도 구분 할 수 있다. --> 아래 그림 참조. 1) code 영역 - 코드 자체를 구성하는 메모리 영역으로 Hex파일이나 BIN파일 메모리다. - 프로그램 명령이 위치하는 곳으로 기계어로 제어되는 메모리 영역이다. 2) data 영역 - 전역변수(global), 정적변수(static), 배열(array), 구조체(structure) 등이 저장된다. 가) 초기화 된 데이터는 data 영역에 저장되고, 나) 초기화 되지 않은 데이터는 BSS (Block Stated Symbol) 영역에 저장된다. - 프로그램이 실행 될 때 생성되고 프로그램.. 더보기
[C++] 멤버 함수포인터 사용하기 출처 : http://teamblog.joinc.co.kr/yundream/95 여러분은 함수포인터를 사용해봤을 것이다. C에서 제공하는 qsort(3)와 같은 함수도 함수포인터를 사용한다. 다음은 qsort(3)을 이용해서 정렬하는 간단한 프로그램이다. #include #include #include int compare(const int *one, const int *two) { if (*one > *two) return -1; else return 1; } int a[3] = { 50, 10, 20 }; int main() { qsort(a, 3, sizeof(a[0]), compare); print("%d\n", a[0]); return 0; }qsort 함수는 인자로, 비교에 사용할 함수의 포인.. 더보기
[C++] explicit 키워드 출처 : http://bischoff.tistory.com/202?_new_tistory=new_title 먼저 아래 따라오는 소스를 실행해 봅시다. #include class TestClass { public: TestClass(int nParam = 1) : m_Num(nParam) { std::cout 더보기
Source Code 수행속도 측정하는 방법 Entering Hyperspace by Éole 코딩을 하다보면 특정 코드 부분의 수행 속도를 측정해야 될때가 있다. 아래 3개의 코드가 수행 속도를 측정하는 코드들이다. * Code2가 셋 중에서는 가장 정확하다. [Code 1] time.h를 이용하는 방법#include int main( void ) { clock_t startTime = clock(); // 코드 실행 전 시간을 구한다. // 여기에 수행속도를 측정할 코드를 입력 clock_t endTime = clock(); // 코드 실행 후 시간을 구한다. // 코드 실행 시간을 초로 변환한다. double codeExcuteTime = ( ( double )( endTime - startTime ) ) / CLOCKS_PER_SEC; re.. 더보기
OpenMP 라고 아십니까?? 출처 : http://www.filewiki.net/tc/entry/OpenMP-라고-아십니까 VS.net 2008에서 몇일 전 컴파일러 옵션에 대해서 이렇게 저렇게 조절을 하면서 저도 처음으로 OpenMP라는 옵션이 있다는 것을 알게되었습니다. 그냥 이름만 딱 봤을땐 Multi Process에 관련된 기능이라는 느낌이 오더군요. 예전에 C#에서 멀티 프로세싱에 관련된 어떠한 라이브러리에 대한 소개를 보았기 때문에 혹시 그런 종류가 아닐까 했습니다. 찾아보니 위에 언급한 라이브러리 부류더군요. 다만 다른 점은 Directive로 정의된다는 것일까요. 뭐 일단 OpenMP의 특징은 "공유 메모리를 사용하는 환경의 병렬화 프로그래밍의 표준"입니다. 고로 다른 플랫폼에서도 사용할 수 있습니다. 제가 찾아보니 .. 더보기
CppUnit CookBook 출처 : http://kukuta.tistory.com/90 리팩토링이라는 책을 읽다가 단위 테스트에 대한 필요성을 느끼고 예전 부터 한번 알아봐야지 하고 마음만 먹던 CppUnit에 대해서 간략한(?)하게 테스트 케이스 작성 방법에 대해서 요약해 보았습니다. 원문은 http://cppunit.sourceforge.net/doc/1.9.11/cppunit_cookbook.html#cppunit_cookbook 에서 확인 하실 수 있습니다. Simple Test Case 코드가 정상적으로 작동하고 있는지를 알아보기 위해서는 다양한 방법이 있습니다. 디버거를 사용하여 코드를 일일이 따라가 보거나, 특정 위치에서 문자를 출력 하도록 하는 것도 간단하고 좋은 방법 중에 하나임에는 분명합니다. 하지만 다소 뒤떨어.. 더보기