【问题标题】:Vala: Free GChecksum after operation to get a correct MD5 hashVala:操作后释放 GChecksum 以获得正确的 MD5 哈希
【发布时间】:2015-11-26 22:20:09
【问题描述】:

我正在学习 Vala,我正在尝试构建一个 Gtk+ Gui 来输出文件的 MD5 哈希值。 目前我正在使用valadoc.org 对我的应用程序进行编码,并且我正在使用 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";
}

【问题讨论】:

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

标签: hash gtk vala md5sum


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 2016-06-24
    • 1970-01-01
    • 2010-12-09
    相关资源
    最近更新 更多