Objective c strcpy在较大尺寸上崩溃(iPhone使用rapidXML)

Objective c strcpy在较大尺寸上崩溃(iPhone使用rapidXML),objective-c,ios5,rapidxml,Objective C,Ios5,Rapidxml,我正在iOS5上学习rapidxml的教程,不幸的是我的c有点生疏。以下代码适用于较小的字符大小,但在 EXC_BAD_ACCESS 我盲目地尝试了以下方法,但没有成功: NSString *xmlStringOrg = [[NSString alloc] initWithData:xmlData encoding:NSASCIIStringEncoding]; char xmlString[3600000]; strcpy(xmlString, [xmlStringOrg UTF8Str

我正在iOS5上学习rapidxml的教程,不幸的是我的c有点生疏。以下代码适用于较小的字符大小,但在 EXC_BAD_ACCESS 我盲目地尝试了以下方法,但没有成功:

 NSString *xmlStringOrg = [[NSString alloc] initWithData:xmlData encoding:NSASCIIStringEncoding];
 char xmlString[3600000];
 strcpy(xmlString, [xmlStringOrg UTF8String]);

有什么想法吗?从很久以前我的c类开始,我觉得我需要把大于X的大小块分开处理,但我不确定从哪里开始


编辑1-工作 感谢@RichardJ.RossIII,以下作品:

# pragma mark - parser methods
-(void)parseIncomingFeed:(NSData *)xmlData:(NSString*)tag {

    NSString *xmlStringOrg = [[NSString alloc] initWithData:xmlData encoding:NSASCIIStringEncoding];
    NSLog(@"[xmlStringOrg length] = %-10d  [xmlData length] = %d", [xmlStringOrg length],[xmlData length]);
    char *xmlString = (char*) malloc([xmlStringOrg length]);
    strcpy(xmlString, [xmlStringOrg UTF8String]);  // no more tears
    ...
    free(xmlString);
  }

很明显你的缓冲区溢出了,如果你使用malloc和free会发生什么?谢谢@RichardJ.RossIII,就是这样。我改变了
char-xmlString[[xmlStringOrg-length]]-->
char*xmlString=(char*)malloc([xmlStringOrg-length])和添加的
免费(xmlString)在我的方法末尾。很高兴你解决了这个问题!请在下面将解决方案作为答案发布,而不是对您的问题进行编辑。您将字节转换为
NSString
对象只是为了将其转换回字节数组吗?A
const char*xmlString=[xmlData字节]应该足够了。很明显你的缓冲区溢出了,如果你使用malloc和free会发生什么?谢谢@RichardJ.RossIII,成功了。我改变了
char-xmlString[[xmlStringOrg-length]]-->
char*xmlString=(char*)malloc([xmlStringOrg-length])和添加的
免费(xmlString)在我的方法末尾。很高兴你解决了这个问题!请在下面将解决方案作为答案发布,而不是对您的问题进行编辑。您将字节转换为
NSString
对象只是为了将其转换回字节数组吗?A
const char*xmlString=[xmlData字节]应该足够了。
 NSString *xmlStringOrg = [[NSString alloc] initWithData:xmlData encoding:NSASCIIStringEncoding];
 char xmlString[3600000];
 strcpy(xmlString, [xmlStringOrg UTF8String]);
 NSString *xmlStringOrg = [[NSString alloc] initWithData:xmlData encoding:NSASCIIStringEncoding];
 char xmlString[[xmlStringOrg length]];
 strncpy(xmlString, [xmlStringOrg UTF8String], [xmlStringOrg length]);
# pragma mark - parser methods
-(void)parseIncomingFeed:(NSData *)xmlData:(NSString*)tag {

    NSString *xmlStringOrg = [[NSString alloc] initWithData:xmlData encoding:NSASCIIStringEncoding];
    NSLog(@"[xmlStringOrg length] = %-10d  [xmlData length] = %d", [xmlStringOrg length],[xmlData length]);
    char *xmlString = (char*) malloc([xmlStringOrg length]);
    strcpy(xmlString, [xmlStringOrg UTF8String]);  // no more tears
    ...
    free(xmlString);
  }