unichar* 转 NSString 出现的内存错误

iOS 码拜 9年前 (2015-05-02) 1658次浏览 0个评论

一个非常简单的加密函数,其实我上一个帖子也发过了,这个是纠正了一些错误,但是还是遇到了内存问题,
根据我的排除法,确定了是这个函数,而且是:
strResult = [[NSString alloc] initWithCharacters:szArray length:nCount];
这条语句的错误,想问下,因为也是考虑了中文,所以用了unichar,
想我下面会遍历一次NSString所有字符串而且会修改的,应该用什么方法比较快,如果就是我下面那种,最后的unichar*应该怎么交给NSString返回,谢谢了


-(NSString *)Decryption : (NSString*)strData : (int)nCode
{
    if(strData == nil || [strData  isEqual: @""])
        return @"";
    
    NSString* strResult = @"";
    
    int nCount = (int)strData.length;
    size_t nLen = (sizeof(unichar) * sizeof(nCount + 1));
    unichar* szArray = (unichar *)malloc(nLen);
    for(int i = 0; i < nCount; ++i)
    {
        szArray[i] = [strData characterAtIndex:i] ^ nCode;
    }
    szArray[nCount] = ""\0"";
    
//    strResult = [[NSString alloc] initWithCharacters:szArray length:nCount];
    free(szArray);
    return strResult;
}


unichar* 转 NSString 出现的内存错误
60分
size_t nLen = (sizeof(unichar) * sizeof(nCount + 1));
替换成:
size_t nLen = (sizeof(unichar) * (nCount + 1));
unichar* 转 NSString 出现的内存错误
谢谢,好久没做纯C了,连内存分配都不会了……
unichar* 转 NSString 出现的内存错误
引用 2 楼 hili210 的回复:

谢谢,好久没做纯C了,连内存分配都不会了……

大家一起学习进步


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明unichar* 转 NSString 出现的内存错误
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!