奇怪的内存问题

问题描述:

在某些时候,我分配一个NSMutableData元素是这样的:奇怪的内存问题

NSMutableData* data=[[NSMutableData alloc] initWithLength:0]; 

后来,我做的:

NSString *dataAsStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] ; 
completeCommand = [NSString stringWithFormat:@"%@%@", 
    incompleteMessage, 
    [dataAsStr substringWithRange:NSMakeRange(startIndex, i-startIndex)]];   
[incompleteMessage release]; 
incompleteMessage = nil; 
[dataAsStr release]; 

最后,我呼吁:现在根据

[data release]; //Here I get a BAD_ACCESS error since data gets a release count of -1 

到乐器(支持僵尸的分配),第二块的第一行NSString * dataAsString = ...调用[数据发布]

这是怎么回事?

+2

你可以发布完整的方法,似乎这个问题不在发布代码的范围内。 – Manny 2011-01-05 11:37:59

+0

尝试[[NSMutableData alloc] init]。也许它有帮助。 – burki 2011-01-05 12:13:18

+1

在使用dataAsStr进行数据处理之前,您正在做什么? – 2011-01-05 12:20:04

这个神秘的东西被解决了.. 它是一个相当大的方法,所以我没有意识到[data release];在一个循环中,它的分配不是。这是造成僵尸。