0
나는 내가 다음과 같이로 부르는 C의 API가 있습니다[bytes]는 사용하지 않아도 자동으로 메모리를 해제합니까?
- (NSData*)getFileContents {
NSData *fileContents;
//do something
return fileContents;
}
-(void*) manipulateFile {
UInt8 *data = (UInt8*) [[self getFileContents] bytes];
UInt32 dataLength = (UInt32)[[self getFileContents] length];
//call some C API with the data and dataLength value
을}
지금은 명시 적으로 내가 bytes
전화의 후드 아래에 무슨 일이 일어나고 있는지 궁금 free(data)
를 호출 할 필요가 없습니다으로 내 질문에
나는 내 프로그램이 추락했을 때 (하하) 많이 생각했다. 나는 이것이 그 이유와 후드에서 일어나는 일이 왜 궁금합니다. 죄송합니다. 명확해야합니다. – ExceptionHandler
'bytes' 속성이 NSData 인스턴스가 소유 한 포인터를 전달하고 있습니다. NSData 인스턴스는 해당 메모리를 소유합니다. 책임이 있습니다. 그것은 당신에게 복사본을 제공하지 않습니다. 따라서 포인터를 소유하지 않으므로 포인터를 비우면 안됩니다. – rmaddy