来告诉大家 AddressSanitizer: stack-buffer-overflow on address 一般都是代码哪里出现了问题

通常C /C++ 编译器 是对内存访问是不添加边界检查的。有时候优于代码错误,就有读或者写 操作了缓冲区外面的内存地址。这种错误一般都很难察觉。所以一旦编译出现AddressSanitizer: stack-buffer-overflow on address 错误,首先就检查自己代码的边界条件是否没有控制住。

什么是stack-buffer-overflow ? 

举例来说: 

int a[10];

a[11] = 10; // stack-buffer-overflow

a[-1] = 10;//stack-buffer-underflow

 

什么是head-buffer-overflow ? 

举例来说:

int* x = malloc(10);
int n=x[11]; //heap-buffer-overflow

int n=x[-1] //heap-buffer-underflow


 

上一篇:在Visual Studio中安装Directx和Direct3D


下一篇:c#-WPF和Flex之间的区别