이 문제와 관련하여 많은 게시물을 보내 주셔서 진심으로 감사드립니다.콜백 중에 아무 것도 할 수 있습니까? 기본 목표 C 이슈
나는 C로되어 있고 새로운 버퍼가 도착할 때 콜백 함수를 가지고있다.
여기 콜백에서 malloc이 아닌 어떤 것도하지 말라고 들었습니다.
이제 새 버퍼를 다른 클래스 (원 버퍼를 만들고 많은 버퍼를 저장)로 보내려고합니다.
하지만, 내가 얻지 못하는 기본적인 것은 콜백에서 다른 함수를 호출하면됩니다. 그 기능을 DSP에서 수행하기 때문에 시간이 걸립니다. 그 콜백에서 그것을하는 것과 같습니다.
froof : 나는 다른 클래스의 다른 함수에 데이터를 보내고 그 ok를 시도하지만 거기에 NSLOG
을 시도하면 다시 메모리 누수가 발생합니다.
여기에 내가 콜백에서 전화를 다른 클래스 :
- (id)init
{
self = [super init];
if (self)
{
data = malloc (sizeof(SInt16) * 4000);
}
return self;
}
-(void)sendNewBuffer:(SInt16*)buffer
{
data=buffer;
NSLog(@"data arrived size is : %lu",sizeof(data));
for(int i=0; i<sizeof(data);i++)
{
NSLog(@"%d",data[i]);
}
}
만 comment the log
, 그것은 메모리 누수없이 작동 할 때. 콜백이 기다리고 있음을 의미합니다!
그 데이터를 다른 곳에서 병렬로 처리하는 방법은 무엇입니까? 지금은 일주일을 보내고 있습니다.
감사합니다.
명확하게해야합니다. 누가 너 한테 아무것도하지 말라고 했어? 그리고 그들이 정말로 "무엇이든"이라고 말하면, 당신은 아무것도 할 수 없다면 콜백이 존재하지 않을 것이기 때문에 그들은 불쾌하게 부정확합니다. 알아 두어야 할 것은 콜백 컨텍스트에서 수행 할 수있는 작업의 세부 사항입니다. –
콜백은 무엇입니까? – Dani
또한, 메모에서 버퍼 데이터를 반복하는 방법이 아닙니다. 'sizeof'는 매개 변수 데이터 형식의 크기를 반환합니다. 서명 된 16 비트 정수에 대한 포인터의 크기를 묻습니다. 포인터가 가리키는 버퍼의 크기를 묻지 않습니다. 버퍼의 길이는 별도의 인수로 전달해야합니다. –