您的位置:首页 > Web前端

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

2020-04-01 18:30 1476 查看

通常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


 

  • 点赞
  • 收藏
  • 分享
  • 文章举报
代码随想录 博客专家 发布了230 篇原创文章 · 获赞 249 · 访问量 26万+ 他的留言板 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐