在 C++ 中传递字符串时指针无效



我有两个 c++ 类,我们称一个为hier,另一个称为cp。 在启动期间,hier创建cp的实例。cp读取具有两列的文本文件,称为resp_rresp_l,并将内容存储在两个同名数组中。例如:std::vector<int> resp_r;

对于好奇的读者来说,这些列表示在 1 秒的窗口中是否发生了左键或右键。

在每个单元格中,resp_r/l具有 1 或 0,具体取决于文本文件。

hier知道文本文件中的行数 (t(,并且对t有一个for循环。在每个循环中,它通过调用string get_response(int t)cp的公共方法cpresp_r/l[t]

中的内容"询问":
string resp;
while (t < max_t) {
resp = cp->get_response(t);
...
}

cp中,get_response函数的定义如下:

string CP::get_response(int t) {                                                                                                                                                                                                
if (resp_r[t] == 1) {                                                                                                                                                                                                                       
return "right";                                                                                                                                                                                                                           
} else if (resp_l[t] == 1) {                                                                                                                                                                                                                
return "left";                                                                                                                                                                                                                            
}                                                                                                                                                                                                                                           
return "none";                                                                                                                                                                                                                              
}  

我有大约 50 个文件,可以正常工作,但在其中一个文件中,当脚本接近文件末尾时,它就不能了。

* './cp_diff_vr_x.out' 中的错误: free((: 无效指针: 0x0000000000f3e920 *

我试图弄清楚这里出了什么问题。错误似乎发生在 return 语句期间(具体来说,返回"right"(,而不是在查询resp_r期间。

好的,好的,Sam Varshavchik 是对的,该错误位于一个完全不相关的地方,访问另一个函数(cp 内部(中的数组超出其分配的大小。噩!

我发现了 valgrind 的错误,这给了我一个无效的读取大小错误。

哇。自从我编写 c++ 代码以来已经太久了。是时候结束这个项目并把它送走了!

谢谢大家。

最新更新