EXEC_BAD_ACCESS(Code=1 , Address 0x0)
이 코드는 applicationDidFinishLaunching
이후에 Appledelegate.m에 있습니다. while 루프는 자연스럽게 무작위로 검색됩니다 (찾기 이벤트가 예외적 인 경우는 거의 없습니다). 어떤을위한 언어 죄송하고 감사의은 ... 이제 소스 도와 :EXEC_BAD_ACCESS (코드 = 1, 주소 = 0x0)
int trackindex = 14;
MusicSequenceGetIndTrack(sequence,trackindex, &track);
// Iterate throught the select track and add user event
Boolean hasNextEvent = false;
Boolean hasEvent = false;
NewMusicEventIterator(track,&iterator);
MusicEventIteratorHasCurrentEvent(iterator, &hasEvent);
MusicEventIteratorHasNextEvent(iterator, &hasNextEvent);
// loop throught track
while (hasNextEvent==true){
MusicTimeStamp timestamp = 0;
MusicEventType eventType = 0;
const void *eventData = NULL;
int note = 0;
MusicTimeStamp duration = 0;
MusicEventIteratorGetEventInfo(iterator, ×tamp, &eventType, &eventData, NULL);
if(eventType == kMusicEventType_MIDINoteMessage) {
MIDINoteMessage *noteMessage = (MIDINoteMessage *)eventData;
note = noteMessage->note;
duration = noteMessage->duration;
UserEvent event;
event.lenght = 0;
event.lenght = sizeof(UserEvent);
event.playedNote = note;
event.tStamp = timestamp;
MusicEventUserData *data = (MusicEventUserData *)&event;
MusicTrackNewUserEvent((MusicTrack)track, timestamp, data);
counter++;
printf("counter : %u\n",counter);
}
MusicEventIteratorHasNextEvent(iterator, &hasNextEvent);
MusicEventIteratorNextEvent(iterator);
}
이 정보는 실제로 충분하지 않습니다. 누군가는 추측 할 수 있습니다. 그러나 그러한 무작위 영감의 순간을 기다리지 않는 한, 당신은 우리에게 단편, 자기 포함, 올바른 예 (http://sscce.org)를 주어야합니다. 그렇게 할 수 없다면 적어도 스택 추적을 사용하여 충돌이 발생한 곳과 매개 변수가 무엇인지 추측 할 수 있습니다 (MusicSequence 함수 내부에 있다고 가정). – abarnert
'MusicEventUserData'의'length '멤버의 길이가'lenght'이 아니기 때문에, 코드가 충분하지 않은 것뿐만 아니라 코드의 _part_도 명확하지 않습니다. (그리고 부수적으로, 왜 0을 할당 한 다음 바로 'sizeof (UserEvent)'로 바꾸겠습니까?) – abarnert
포기하기 전에 추측을 할 것입니다. 나는 당신이'(MusicTrack) track'을하고 있음을 알아 차렸다. 이것은'track'이 다른 타입의 것을 의미합니다. 유감스럽게도 변수 정의 또는 설정 방법을 표시하지 않습니다. 그러나'OpaqueMusicTrack'을 포함하는 구조체를 생성하고 'MusicTrack'으로 주위에 포인터를 전달하려고하는 것처럼 펑키 한 일을했다면, 결국 조각이되어 결국 쓰레기를 읽게 될 것입니다 (그리고 나서 , 실제 포인터 대신 0 참조), 심지어는 (실제로 운이 좋으면) 메모리 블록과 세그 폴트의 마지막 페이지 끝에서 바로 읽습니다. – abarnert