반응형

cocos2d-x로 개발하다 보면 실제 코딩을 

OSX 유저는 Xcode, Windows 유저는 Visual Studio를 사용 합니다.


저는 Xcode를 사용 하는데 바보 같은 실수를 하여 시간을 낭비했습니다. ㅠ_ㅠ


개발 10년차가 맞는가 하는 오류를 범하고...

혹시나 저와 같이 시간을 낭비하는 분들이 계실까봐 간단하게 글 남깁니다.


저는 아래와 같은 코드를 작성했습니다.

char szDiceFilename[10] = { 0, };

sprintf(szDiceFilename, "dicenum_%d.png", 1);


무엇이 문제 일까요?

무엇 때문에 "stack corruption detected" 에러를 Android에서 발생시키는 걸까요?


벌써 다들 눈치 채셨겠죠? 

메모리 할당을 10byte만 해놓고 13byte를 복사하려고 해서 발생한 문제 입니다.


왜 이런 오류를 범했는가?

컴파일 때는 에러가 발생하지 않습니다.(당연히 컴파일러는 얼만큼 사용할지 모르기 때문이죠^^)

더 큰문제는 Xcode로 컴파일하고 iOS에서 실행을 하면...

두둥...


문제가 발생하지 않습니다.

iOS기기 특성상 부족한 메모리를 자동 할당해주기 때문이죠!!


근데 어디서 문제가 발생하느냐!!

Android 에서 실행시 문제가 발생합니다.


해결 코드 입니다.

char szDiceFilename[32] = { 0, }; //10바이트 할당을 32바이트로 할당

sprintf(szDiceFilename, "dicenum_%d.png"1);


너무 간단한거라 포스팅 하기도 좀 그랬지만.. (사실 창피한게 99%)

혹시나 저 같은 오류를 범하시지 말라고 ^^


메모리를 아껴보겠다는 의지는 아니였지만... 

아무생각 없이 빠르게 개발하다 보면 위와 같은 실수를 할 수 있으니 조심하세요!

반응형

+ Recent posts