저는 Linux를 사용하고 있습니다.strcat를 사용하여 메모리에 액세스 할 수 없습니다.
내가 좋아하는라는 기능이 있습니다
void SoundManager:: PlayBackgroundIntroMusic(char * musicFile) { // Concatenate extension for each platform strcat (musicFile,audioExtension); CCLOG("musicFile: %c" musicFile); SimpleAudioEngine::sharedEngine()->playBackgroundMusic(std::string(CCFileUtils::fullPathFromRelativePath(musicFile)).c_str(), false); }
하지만 난 라인 메모리에 나쁜 액세스 갖는 :
PlayBackgroundIntroMusic((char *)"IntroMusic");
기능입니다
strcat (musicFile,audioExtension);
audioExtension가 declarated됩니다 :
,394,그래서, 난이 예상 : 무슨 일이야
IntroMusic.caf on iOS IntroMusic.ogg on Android
?
참고 : I가 시도 :
char * musicFileWithExtension = strcat (musicFile,audioExtension);
하지만 어쨌든 작동하지 않았다.
musicFile은 상수가 아닙니다. 파일 이름이 너무 길면 오버플로를 피하기 위해 tempchar [80]을 선언하고 싶지 않습니다. Example cc reference
미리 감사드립니다.
사용 그리고 그것을 종료를, 당신은 캐스트 아마 당신은 그것을 경청해야 추가 된 –
캐스트없이 작동합니까? 연습 : 이유를 찾아보십시오. –
(char *) 캐스트를 사용하면 경고가 전송되고 변환이 줄어들어 캐스트가 수행됩니다. – vgonisanz