可以净化找出栈变量上的访问冲突
Can purify find out access violation on stack variables?
目前我正在使用Valgrind来检查内存泄漏,并将Purify作为替代。Valgrind可以找出在堆中而不是在堆栈中创建的数组的访问冲突。
char* a = static_cast<char*>(malloc(sizeof(char) * 5));
a[7] = 'c';
printf("%cn", a[7]);
free(a);
上面的代码中有无效的写入和读取,但下面的代码中没有。
char a[5] = {0};
a[7] = 'c';
printf("%cn", a[7]);
Purify能识别两个代码块的访问冲突吗?
根据用户指南(ftp://ftp.software.ibm.com/software/rational/docs/v2003/purify/html/ht_m_sbr.htm)和(ftp://ftp.software.ibm.com/software/rational/docs/v2003/purify/html/ht_m_sbw.htm), Purify可以检测堆栈边界读取和写入。
然而,在您的实际示例中,Purify也只检测到堆数据上的冲突。我只测试了IBM的最新版本(7.0.1),包括Linux和Solaris。
对于gcc 4.8和更高版本,您可能需要查看-fsanitize=address
相关文章:
- 写入位置0x0000000C时发生访问冲突
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 链表中写入访问冲突的未知原因
- C++中的openCV Mat访问冲突
- C++尝试深度复制唯一指针时出现内存访问冲突
- C++ 中动态二维数组的访问冲突
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- 尝试通过共享指针使用变量时读取访问冲突
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- 尝试使用成员函数访问动态分配的成员变量时读取访问冲突
- 写入结构变量时发生strcpy访问冲突
- C++-引发异常:读取访问冲突.变量为nullptr
- 当函数在fread()应用于局部结构变量后返回时发生访问冲突
- 声明变量时发生访问冲突
- 传递变量时的访问冲突
- 可以净化找出栈变量上的访问冲突
- 赋值变量时c++未处理异常访问冲突
- 使用 int 变量的 C++ 异常访问冲突
- 未处理的异常/访问冲突,只要我在变量上使用 OutputDebugStringW()
- 尝试返回同一类中的私有变量时C++ "Getter"方法抛出访问冲突