【发布时间】:2011-11-04 08:23:16
【问题描述】:
我正在尝试“标记”从我的文本文件中获取的数据。
当我这样做时,我收到如下错误:
malloc: * 对象 0x844c730 的错误:未分配被释放的指针 * 在 malloc_error_break 中设置断点进行调试
我使用的代码如下所示:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"mydata" ofType:@"txt"];
NSString *rawText = [NSString stringWithContentsOfFile:filePath encoding:NSASCIIStringEncoding error:nil];
//No error was caused by above line
NSArray *tmp = [rawText componentsSeparatedByString:@"##@@"];
NSString *title = @"";
NSString *detail = @"";
for(int i = 0; i < [tmp count]-1; i++)
{
NSArray *base = [[tmp objectAtIndex:i] componentsSeparatedByString:@"##"];
title = [[NSString alloc] initWithFormat:@"%@$$%@",title,[base objectAtIndex:0]];
detail = [[NSString alloc] initWithFormat:@"%@$$%@ | %@ | %@",
title,
[base objectAtIndex:0],
[base objectAtIndex:1],
[base objectAtIndex:2]
];
[base release];
}
[tmp release];
一定是这部分代码,因为如果我注释掉这段代码,它就可以正常工作。
阅读上面写着set a breakpoint 的错误,我不知道把它放在malloc_error_break 中
我的内存管理出了什么问题?
否则我该如何以其他方式拆分字符串?
【问题讨论】:
-
你确定是 NSArray 版本导致了崩溃吗?程序是否在该行留下 EXC_BAD_ACCESS 或其他内容?
-
啊,它确实在 main.m 中留下了一个
EXC_BAD_ACCESS但不在那里 -
main.m 中的 EXC_BAD_ACCESS 没有用。您应该始终使用断点导航器/边栏中的添加按钮在抛出的异常上添加断点。这将导致调试器在引发异常的行上中断,而不是 main.m
标签: objective-c ios memory-management