Hash Vala:在操作后释放GChecksum以获得正确的MD5哈希

Hash Vala:在操作后释放GChecksum以获得正确的MD5哈希,hash,gtk,vala,md5sum,Hash,Gtk,Vala,Md5sum,我正在学习Vala,我正在尝试构建一个Gtk+Gui,它输出一个文件的MD5散列。 目前,我正在使用GLib.Checksum来编写我的应用程序,并使用GLib.Checksum来计算校验和。GLib.Checksum句柄MD5、SHA1、SHA256和SHA512(可在文档中找到)。 所以我使用文档中的代码来计算输入文件路径的散列。我发现Vala没有自动释放GChecksum,我不知道如何手动释放 谢谢你的帮助 这是我的Vala代码: private string HashSum( strin

我正在学习Vala,我正在尝试构建一个Gtk+Gui,它输出一个文件的MD5散列。 目前,我正在使用GLib.Checksum来编写我的应用程序,并使用GLib.Checksum来计算校验和。GLib.Checksum句柄MD5、SHA1、SHA256和SHA512(可在文档中找到)。 所以我使用文档中的代码来计算输入文件路径的散列。我发现Vala没有自动释放GChecksum,我不知道如何手动释放

谢谢你的帮助

这是我的Vala代码:

private string HashSum( string path, string hash){
    Checksum checksum = new Checksum(ChecksumType.MD5);
    FileStream stream = FileStream.open(path, "rb");
    //var stream = File.new_for_path(path).read();

   uint8 fbuf[100];
   size_t size;

   while ((size = stream.read(fbuf)) > 0){
      checksum.update(fbuf, size);
    }
   unowned string digest = checksum.get_string();
   stdout.printf("%s: %s\n", path, digest);

   return @"$hash hash: $digest";
}

我想问题出在我的Valac版本上。我将它升级到我在Ubuntu存储库中找到的最后一个:Vala0.30.0。现在输出是正确的。

您是如何确定它没有被释放的?在生成的代码中,我看到生成了一个免费调用。你用的是什么版本的Vala?我用的是Vala 0.22.1。当我比较我的应用程序的输出MD5sum和我的Ubuntu PC中的MD5sum时,我发现了这一点。这就是为什么我发现校验和没有被释放:当我尝试进行多次求和时,输出会发生变化。今天当我打开电脑时,输出是正确的。当我使用--pkg gtk+-3.0重新编译我的应用程序时,输出改变了!我不知道为什么真的。。。我想这是个自由的问题。@apmasell:谢谢你的回答!问题在于我的valac版本。我将其升级到Vala0.30.0,现在输出正确。再次感谢。