- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这让我大吃一惊。我从 iPod 库中读取音频以分析音频样本,我可以做我想做的事,缓冲区总是泄漏,我收到低内存警告并且应用程序被终止。我尝试了所有建议但没有成功。下面的代码被合并到一个静态库中并且读取音频工作正常,只是缓冲区永远不会被释放。我使用 ARC
并且也尝试不调用 CFRelease
但同样的事情......感谢任何建议,我完全卡住了!!!
- (NSInteger) getMP3Samples:(SInt16*)address{
AudioBufferList audioBufferList;
if (_assetReader == nil) {
return 0;
}
_mp3Control.currentSampleBufferCount = 0;
CMSampleBufferRef nextBuffer =[_assetReaderOutput copyNextSampleBuffer];
// Is the Song ended
if (nextBuffer == nil){
if ([_assetReader status] == AVAssetReaderStatusCompleted) {
[_assetReader cancelReading];
}
_assetReader = nil;
_assetReaderOutput = nil;
return _mp3Control.currentSampleBufferCount;
}
CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(
nextBuffer,
NULL,
&audioBufferList,
sizeof(audioBufferList),
NULL,
NULL,
kCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignment,
&_mp3Control.blockBuffer);
if (nextBuffer) {
CMSampleBufferInvalidate(nextBuffer);
CFRelease(nextBuffer);
nextBuffer=NULL;
}
for (int b=0; b < audioBufferList.mNumberBuffers; b++) {
memcpy((void *)(address+_mp3Control.currentSampleBufferCount),(void *)audioBufferList.mBuffers[b].mData,audioBufferList.mBuffers[b].mDataByteSize);
_mp3Control.currentSampleBufferCount+=audioBufferList.mBuffers[b].mDataByteSize;
}
///
/// Return samples and not bytes!!
///
return _mp3Control.currentSampleBufferCount/2;
}
最佳答案
您是否在(未发布的)调用代码中使用和释放由 CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer
返回的 block 缓冲区?
如果您在调用 getMP3Samples:
后没有释放存储在 &_mp3Control.blockBuffer
中的对象,这可能是您的内存管理问题。 (Core Foundation 风格的对象不参与 ARC)
您还可以通过 Allocation & Leaks Instruments 运行您的代码以查看更多详细信息(我只是在这里猜测 :))。
关于iphone - CFRelease 但仍然泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16228926/
以下代码导致我的 C++ 应用程序崩溃: CFMutableDictionaryRef property_dictionary = CFDictionaryCreateMutable( kCFAllo
这让我大吃一惊。我从 iPod 库中读取音频以分析音频样本,我可以做我想做的事,缓冲区总是泄漏,我收到低内存警告并且应用程序被终止。我尝试了所有建议但没有成功。下面的代码被合并到一个静态库中并且读取音
我正在学习 iOS 编程。 我编写了关联地址的代码。 有很多方法。喜欢 我正在划分一个小组。 这是组1 ABAddressBookCreate(); ABRecordCopyCompositeName
我有一个代码行,我在下面提到的行中一直崩溃。 ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error
这个问题在这里已经有了答案: When do I use CFRelease? (2 个答案) 关闭 9 年前。
我有清除设备中地址簿的方法。方法如下。 -(void) clearAdressBook { ABAddressBookRef addrBook=ABAddressBookCreate();
我们的一位测试人员报告了以下崩溃: 0 APP_NAME_WAS_HERE 0x00074892 testflight_backtrace + 158 1 APP_NAME_WAS_HERE 0x00
以下是来自 Omni frameworks 的代码片段: CGMutablePathRef path = CGPathCreateMutable(); CGPathAddRect(path, NULL
我以两种方式拦截 CGEventRef: 返回值 NULL 以终止事件 通过 CGEventCreateKeyboardEvent() 为事件分配一个新的 CGEventRef Xcode 的分析器告
我的代码有一个非常奇怪的错误。事实上,根本没有错误,只是调试器以“程序收到信号:“EXC_BAD_ACCESS””消息开始。谁能帮我?我非常困惑...谢谢。 -(NSString *)fullName
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我正在尝试合并四张图片以使其成为一张 uiimage。但是当我要执行 CFRelease 时,它崩溃了。如果我不这样做,就会导致内存泄漏和崩溃。如何解决? 请参阅下面的代码。 refere
ABAddressBook 发生了一件奇怪的事情。这是一些代码: - (NSArray*)addressBookArray { ABAddressBookRef addressBook = N
我正在处理我的一个处于维护阶段的项目,所以我没有太多的自由来一次更改一个主要 block ,在处理这个时,我在模拟器和设备上都看到了这个随机崩溃而应用程序与服务器同步。流动性登录->上传本地数据到服务
CMSampleBufferRef sampleBuffer = [assetOutput copyNextSampleBuffer]; CMBlockBufferRef buffer = CMSam
我有点困惑。我读过的所有地方都建议在使用 ARC 时,你仍然需要释放核心基础对象,这是有道理的,ARC 不管理它们。但是,我有一个方法使用了一些 CF 方法/对象,我在这些方法/对象上使用了 CFRe
这是我的代码,运行最后一行CFRelease(addressBook),程序崩溃!帮帮我~! ABAddressBookRef addressBook = ABAddressBookCreateWit
我有以下方法: + (NSString*) getMD5HashFromFile:(NSString*)filePath { CFStringRef md5hash = FileMD5Hash
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)i
我刚刚全身心投入到 iOS 开发中,目前在 queryServer 函数末尾的 CFRelease 函数中出现运行时错误(我在突出显示的行上添加了注释)但我没有如果我注释掉对 extractIPFro
我是一名优秀的程序员,十分优秀!