Software 썸네일형 리스트형 C++ 스마트포인터 참조금지, 대입금지 C++ 스마트포인터에서 참조계수 방법은 편리하기는 하지만 어째든 참조계수가 더 부담된다. 한번만 사용하고 복사나 대입을 금지하는 포인터를 만들면 참조계수 부담이 적고 destroy될때 메모리에서 정리된다.참조계수 기반과 다르게 refbase를 상속받지 않는 int같은형도 가능하다. 즉 sp p1 이런게 가능하다. template class sp{T* obj;sp(const sp&) //복사 금지void operator=(const sp& ) //대입금지public:~sp() { delete obj; } sp(T* p = 0) : obj(p) {} T* operator->() { return obj; } T& operator*() { return *obj; } }; 더보기 C++ Smart Pointer 참조계수 기반 C++ Smart Pointer는 Pointer일반기능(복사,생성,대입,)과 자동 Memory해제 기능을 지원하는 객체를 말한다. smart pointer는 객체에서 Reference count를 해서 더이상 참조하는 경우가 없으면 자동으로 obj를 Free시켜준다. 1 아래와 같이 Smart pointer기본 개념은 아래와 같다.class dog{public :void bark() { printf("bark bark"); }}; class sp { //dog객체를 위한 전용 smart pointerdog* obj;public :~sp() { delete obj; } // scope를 벗어날때 자동으로 Destroy되도록 지원한다.sp(dog* p = 0) : obj(p) {} // 생성자 obj값을 초.. 더보기 GENIVI Platform GENIVI 는 차량 인포테인먼트(IVI In-Vehicle Infotainment) Open Source개발과 규격을 위환 비영리 협의체이다. GENIVI에서 집중하는 부분은 Middle Ware부분이다. 즉 Chip vendor에서 제공하는 BSP(Board Support Package)와 OEM과 3rd Party에서 개발하는 App부분은 제외된다. 구조도로 보면 아래와 같이 노란색과 보래색에 중점을 둔다. Android와 비교하면 Linux BSP를 제외하고 모두 다른것을 볼수 있다. Android와 간단히 비교가 가능한부분은 IPC부분이다. Android에서는 RPC(Remote procedure call)을 위해서 Android Binder를 Google에서 개발했지만. GENIVI에서는 기존.. 더보기 C++참조변수-2 참조변수 2. 이번에는 임시객체(temporary object)를 최소화 하기 위해 사용되는 경우를 정리 하겠습니다. struct Data { int a, b;}; Data d ={1,2); Data test() // Data개체를 넘기게 됩니다.{ return d; } int main(){ test().a = 10// d.a 는 어떤값을 가지게 될까요.? 이값은 그냥 1입니다.위에 내용은 정상적으로 컴파일되지만, 문제는 test()에서 넘어오는 Object가 임시객체이기 때문입니다. test().a =10에서 사용되고 Destroy됩니다.test()함수에서 return d;는 임시객체를 만들고 전달하게 됩니다.이런 임시객체는 성능과 Memory에 좋치 않습니다. 아래와 같이 적용하면 임시객체를 사용하지.. 더보기 C++ 참조변수-1 오늘은 참조변수에 대해서 알아보겠습니다.변수를 만든다는것은 Memory를 잡는다는거죠. 하지만 아닌경우도 있습니다. int a = 10; // 변수선언을 했네요. Memory를 할당하는거죠.int* b = &a; // Pointer변수를 선언했네요. Pointer를 Memory 에 할당했습니다.int& r = a // C++에서는 참조라는것도 있습니다. 기존 변수(Memory)에 별명입니다. r =20; 을 수행하면 a에 20이 저장되죠. 참조는 기존 Memory에 별명이기 때문에 대부분 Memory를 사용하지 않치만. 일부 컴파일러나 복잡한 Code에서는 Pointer Memory를 사용할 수 있습니다. 아래와 같은 경우는 어떻게 될까요?. Call by value, Call by Pointer도 아니.. 더보기 안드로이드 성능 Systrace 분석 방법-2 Systrace툴을 통해서 다운받은 HTML을 Chrome을 통해서 열면 아래와 같은 화면을 볼수 있다. 각 구분에 대한 설명은 아래와 같다. Zoom을 하거나 선택에 따라서 아래와 같이 미리 설정된 Log에 따라서 정보를 보여준다. 해당 화면에서 자주쓰는 동작키는 아래와 같다.w : 위치한 TimeLine에서 zoom ina : Time line 좌측이동s : 위치한 TimeLine에서 Zomm outd : Time line 우측이동 왼쪽, 오늘쪽 방향키 : 좌우 Event로 이동 1,2,3,4 : Mode변경 더보기 안드로이드 성능 Systrace 개요와 시작방법 안드로이드에는 여러가지 분석을 tool들을 제공하고 있습니다.성능분석을 위한 Tool들도 제공하고 있는데요. 많이 사용하는것은 Systrace, Trace View등이 있습니다. Systrace 개요: Android 성능 분석도구로 CPU scheduler, threads, application 정보를 추출하여 HTML파일로 생성합니다. 안드로이드에서 화면 끊김현상을 주로 Jank가 발생했다고 하는데요. 이런 Jank가 발생하는 Frame분석과 Jank 발생 구간에서 CPU 동작에 대한 분석자료를 제공하여 성능분석에 유용하게 많이 사용되고 있는 tool입니다. Systrace 시작하기 :1.Android Device Monitor에서 Device 선택 후, Systrace Icon을 선택합니다.2.저장 .. 더보기 Valgrind 사용예제 #include #include int main() { char *str = (char*) malloc(1024); printf("flsdkjfslkjfsdklfj\n\n\n"); printf("\n\n"); return 0; } 이렇게 만들고 컴파일( -g 옵션을 넣어야 파일과 라인을 알수 있다. 그리고 -o옵션보다 먼저 써줘야 한다.)하자. gcc -g -o test test.c valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./test valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --log-file="./valgrind_log" ./test 아래와 같이 메로리 Lea.. 더보기 GDB 설정하기 1. gdbserver는 Target에서 Debugging할 대상에 Attack나 running을 시켜놓고 gdb가 연결되기를 기다린다. 이전에 adb가 forward될수 있도록 설정해준다. adb forward tcp:4000 tcp:4000 # gdbserver localhost:4000 --attach 145 # gdbserver localhost:4000 program 2. ./arm-eabi-gdb 는 Remote에서 Target에 gdb server에 연결을 시도한다. $ ./arm-eabi-gdb /mnt/hgfs/omap_release_t32/android/out/target/product/p2/symbols/system/bin/mediaserver (gdb)set solib-absolut.. 더보기 이전 1 다음