【发布时间】:2015-10-15 15:51:08
【问题描述】:
编辑:问题已解决。 @sth 问我是否忘记删除我可能用“new”创建的对象。他是对的!我忘记了。解决这个问题确实解决了这个问题。我想这是 Visual Studio 为我做的事情,而 Linux 没有。
编辑 2: 尽管我自己编写了代码,但由于这是一个学校项目和潜在的抄袭问题,代码已被删除。此外,这个问题似乎与我的代码的细节无关,更多的是与 new 和 delete 的一般 c++ 用例有关。
完全相同的代码在 Visual Studio 2013(安装在 Windows 上)和我使用 g++ 编译代码的学校的 ssh 服务器上表现不同。代码编译没有错误,并按预期工作,除了 1 部分。将数组的内容逐行写入文件时,它会少写 1 行。
如果数组有 10 个元素,Visual Studio 编译代码会创建一个包含 10 行的“sorted.txt”文件,并且所有这些都恰好包含 1 个整数。没有空行。 SSH 编译的代码仍然创建 10 行,但最后一行是空的。所以我的“sorted.txt”文件中实际上缺少 1 个整数。我的作业在评分时将在此服务器上编译,所以这可能是个问题。
【问题讨论】:
-
如果没有正确清理
FileManager对象,程序是否会以某种方式终止? -
在 Linux 上运行 valgrind。您可能会发现
FileManager实例泄漏。 -
@sth 我不确定我是否可以检查。代码执行没有错误,ssh 终端只是要求我编写新命令。它没有给我任何信息。
-
您的程序是否调用了类似
exit()/abort()/... 的函数来终止自身?还是您将FileManager分配给new,但从不分配delete?
标签: c++ linux windows visual-studio