bba*_*zso 2 c++ debugging overflow
我正在使用第三方库编译我的应用程序,似乎有一些奇怪的行为表明堆栈溢出问题(这只是猜测).
但是,当我崩溃应用程序的行运行正常后,我添加一个print语句.如果我删除了print语句(一个简单的cout <<"print something"<< endl;语句),应用程序崩溃了
0x00007f48f2027276 in free () from /lib64/libc.so.6
Run Code Online (Sandbox Code Playgroud)
我尝试添加以下char数组来代替print语句,这也停止了崩溃,然后我尝试打印char数组的内容:
char ben[8000] = {0};
memset(&ben, 0, sizeof (ben));
for (int y = 0; y < 8000; ++y)
{
if (ben[y] != 0)
PRINT ("CHAR[%d]=%d", y, ben[y]);
}
Run Code Online (Sandbox Code Playgroud)
看看数组中的任何内容是否被破坏,但这种方法不起作用.所以我想知道是否有更好的方法来检测这是否是堆栈溢出问题?
我用-fstack-protector-all(lib和我的代码)重新编译了应用程序,这并没有发现任何东西.我也试过valgrind而且它没有给我任何看起来可疑的东西.
它似乎崩溃,因为我试图释放一个无效的指针,但我不知道为什么指针是无效的,因为它释放了一个局部变量(即当它超出范围时).指针因某种原因而被破坏,但这有点像在大海捞针.有没有什么好的技术可以尝试和融合这类问题?非常感谢!
| 归档时间: |
|
| 查看次数: |
2528 次 |
| 最近记录: |