25. 25
Cocos2d-x12
Cocos2d-x 메모리 관리
Sprite
Node
Ref
1
Object-C의 메모리 관리
objc의 메모리 관리는 기본적으로 레퍼런스 카운팅 방식이다.
모든 objc의 클래스는 NSObject를 상속받는다. retain,
release를 적절히 써서 레퍼런스 카운팅 쌍을 맞춰주면 적절
히 메모리가 관리된다. autorelease를 사용하면
NSAutoreleasePool에 생성된 객체가 등록된다. 이후
NSAutoreleasePool이 해제되면 풀에 등록된 모든 객체에
대해서 release를 수행한다.
2
C++의 메모리 관리
C++에는 기본적으로는 저런기능이 존재하지 않는다. new로
객체를 생성하고 delete로 객체를 해제한다. (물론 이제는 표
준이된 std::shared_ptr, 일부컴파일러에서는
std::tr1::shared_ptr라는 이름으로 레퍼런스 카운팅이 되긴
한다.) 하지만 cocos2dx는 cocos2d를 거의 비슷하게 베끼
려보니까 cocos2dx를 보면 CCObject라는 클래스로 objc에
있는 메모리 모델을 비슷하게 만들어놧다.
27. 27
Cocos2d-x12
Cocos2d-x 메모리 관리
auto playmenuItem = MenuItemSprite::create(play_normal,
play_select, CC_CALLBACK_1(MenuScene::menuCallback, this));
28. 28
Cocos2d-x12
Cocos2d-x 메모리 관리
auto playmenuItem = MenuItemSprite::create(play_normal,
play_select, CC_CALLBACK_1(MenuScene::menuCallback, this));
33. 33
Cocos2d-x12
Cocos2d-x Assertion Failed
1.프로그램을 실행하시구요 어썰션 페일이 나면
2.다시 시도를 누르세요.
그러면 디버거는 에러가 난곳에 커서를 가져다 주는데요. 어썰션 처리가 되어
있는곳은 프로그래머가 코딩해주지 않은 부분이 많으므로 콜스택으로 거슬
러 올라 가면서 의심되는 부분을 찾습니다.
콜스택의 단축키는 alt+7 입니다.
3. 어썰션 처리가 되어 있는 부분에서 alt+7 을 누르고
4.최근항목부터 오래된 항목으로 거슬러 올라가는데
5.프로그래머가 코딩해준 부분을 더블클릭해줍니다.(콜스택을 보고 있으면
많이 본 부분이 자신이 코딩해준 부분입니다.)
6.화살표가 가리키고 있는 윗줄 또는 그 윗줄에서 얼마 가지 않아 의심되는
부분이 나올겁니다.
7.포인터나 메모리 연산등을 잘 살펴 보세요.
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardI
D=50&MAEULNo=20&no=501484&ref=501475