我在我的C ++项目(MS Visual Studio 2010)中使用字符集检测器库(uchardet)。 我在存档中遇到了以下用法片段:
void detect(FILE * fp)
{
uchardet_t handle = uchardet_new();
while (!feof(fp))
{
size_t len = fread(buffer, 1, BUFFER_SIZE, fp);
int retval = uchardet_handle_data(handle, buffer, len);
if (retval != 0)
{
fprintf(stderr, "Handle data error.\n");
exit(0);
}
}
uchardet_data_end(handle);
const char * charset = uchardet_get_charset(handle);
if (*charset)
printf("%s\n", charset);
else
printf("ascii/unknown\n");
uchardet_delete(handle);
}
如果uchardet_data_end()
返回非零值,是否可以不致电uchardet_delete()
和uchardet_handle_data()
?我想在使用这个库时避免内存泄漏。