我会尽力以最好的方式提出问题:
我想使用相机制造商的示例代码(只有一个名为“main.cpp”的文件)来从Ubuntu 11.10下的相机中读取图像。如果我使用示例项目,一切正常,我收到图像数据。但是如果我将这个“main.cpp”添加到我的真实项目并进行编译,那么应用程序就会崩溃。
确定导致此错误的部分非常困难。但是,如果我从我删除一些代码(已编译但确定未使用!),程序按预期工作。我想我的代码编译时我正在链接的另一个库导致错误(例如Opencv或boost?)。我试图弄清楚哪个部分会导致这种行为,但如果你们可以在同一时间告诉我,我会很高兴,如果可以从这个崩溃信息中提取有用的信息,可以找到on this Gist。
我的libc是否已损坏?
答案 0 :(得分:0)
libc中的错误?
没有
*** glibc detected *** ./myProject: double free or corruption (!prev): 0x09c12660 ***
此错误表示您的应用程序以某种方式损坏了堆。它可能free
两次使用相同的指针,或者它可能已写入已分配缓冲区的末尾。
找到此类堆损坏错误的工具是Valgrind。
只有当您链接额外的代码时才发生崩溃这一事实可能只是一个意外 - 即使没有额外的代码,该错误也可能存在于应用程序中,但尚未在崩溃中出现。
虽然不太可能,额外的代码也会引入错误。
在任何一种情况下,一旦你在Valgrind下运行应用程序,错误就会变得很明显。