0
如果变量摘要没有手动分配,那么返回的数据在整个程序中被引用时会不断变化,并返回由CFDataCreateWithBytesNoCopy()连续变化的数据。CFDataCreateWithBytesNoCopy()不会与“const char var [xx]”一起工作,但会与malloc?
CFDataRef sha1(CFStringRef string)
{
unsigned char* digest = malloc(CC_SHA1_DIGEST_LENGTH);
const char* cData = CFStringGetCStringPtr(string, CFStringGetFastestEncoding(string));
CC_SHA1(cData, strlen(cData), digest);
CFDataRef sha = CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, digest, CC_SHA1_DIGEST_LENGTH, kCFAllocatorDefault);
free(digest);
CFRelease(string);
return sha;
}
在哪里,因为这不会工作...
CFDataRef sha1(CFStringRef string)
{
unsigned char digest[CC_SHA1_DIGEST_LENGTH];
const char* cData = CFStringGetCStringPtr(string, CFStringGetFastestEncoding(string));
CC_SHA1(cData, strlen(cData), digest);
CFDataRef sha = CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, digest, CC_SHA1_DIGEST_LENGTH, kCFAllocatorDefault);
return sha;
}
也有在上面代码中的任何内存泄漏?