Tag: nsstring

麻烦发现内存泄漏cStringUsingEncoding

嘿,我试图使用cStringUsingEncoding将NSString转换为C字符串,但我有内存泄漏。 我的理解是cStringUsingEncoding返回一个指向字符数组的指针,该字符数组只保证在NSString对象的持续时间内存在。 因此,您应该将其内容复制到另一个字符串。 这就是我的问题所在…… 我有一个函数接受NSString并将其转换为C字符串副本。 仅仅为了测试,我运行了以下方法的1000次迭代(以确保没有泄漏)。 -(void)test{ NSString *test = [[NSString alloc] initWithString:@”Hello world!”]; for(int i=0; i<1000; i++) { char *tmp = [self returnCopiedCString:test]; //free memory free(tmp); } [test release]; } 相当直接的代码……问题是它像疯了一样泄漏。 现在在你得出结论之前我的returnCopiedCString函数工作得很好。 我通过声明和复制C字符串来测试它,以排除这是一个问题的可能性。 在函数内部我使用以下代码进行转换 -(char *)returnCopiedCString:(NSString *)input{ //retain input [input retain]; //get length of encoded C-string int len = [input lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; //allocate memory for […]

从C数组创建NSArray

关于相反的方式有许多线索,但我有兴趣从原始C数组转换为NSArray。 原因是我想从数组内容创建一个NSString。 要创建NSString,我将使用: NSArray *array; NSString *stringFromArray = [array componentsJoinedByString:@”,”]; 我用逗号加入数组的元素,因为我稍后会将字符串保存为.csv文件。 我认为这不重要,但我正在处理的C数组是double类型和43。 double c_array = new double [43]; 谢谢!

为什么不需要解除引用NSString指针?

在这个例子中 NSString *message = @”Hello”; message = @”World”; 如果message只是一个指针,为什么我不需要明确说出消息中的任何内容现在等于string或*message = @”World”; 喜欢在C?