【发布时间】:2016-03-10 03:13:35
【问题描述】:
我这部分代码的思路比较简单;我正在做一个迭代某个整数范围的for循环,迭代的值放在数字到字符串的转换中,然后在for循环中调用以读取数据文件。
代码sn-p:
for (int z = 11; z < 33; z++) {
const std::string filename_1 = "detection";
int value = z;
std::string filename_2;
std::ostringstream convert;
convert << value;
filename_2 = convert.str();
const std::string filename_3 = ".rat";
const std::string my_file = filename_1 + filename_2 + filename_3;
// Reading data from the .rat files of the detected signal.
Reading(my_file, times_det, signal_det);
// Further calculations go here.
代码编译并执行,但在读出两个计算结果后,我返回错误:
./test
0.527679
0.639159
*** Error in `./test': double free or corruption (out): 0x0000000000f52a30 ***
Aborted (core dumped)
我不是在必要的地方清除内存吗?使用 .clear() 并没有消除这个问题。
感谢您的建议!
编辑:为了清楚起见,“阅读”功能:
void Reading(const std::string &filename, rarray<double,1> ×, rarray<std::complex<double>,1> &signal) {
std::ifstream f(filename.c_str());
// Read in the signal.
f >> times;
f >> signal;
}
【问题讨论】:
-
乍一看,我不明白这个错误是如何发生的。您确定它不会在
Reading函数中发生吗?提出问题的最佳实践包括从等式中删除任何未知数。这对您和我们都有帮助,因为我们不必假设/猜测代码中其他地方发生了什么。 -
检查您连续两次打开/关闭同一个文件的阅读功能。你提供的sn-p没有问题
-
感谢您的意见。我已经修改了我的原始帖子以包含函数的定义,希望这将有助于澄清事情。
-
@Kam 现在还有更多我不知道的!这是什么
rarray?你知道这不是对rarray,或者你对times_det或signal_det的处理吗?您应该真正将代码减少到重现您的问题的最小示例。仅此一项就可以让您找到答案,并让我们自己尝试代码。 -
@KenWayneVanderLinde rarray 只是我用来生成数组的库; times_det 和 signal_det 是我创建的用于传递函数的数组。代码在没有 for 循环的情况下工作得很好;唉,我将尝试简化问题,看看是否可以缓解。再次感谢您的意见!