缓冲区溢出(buffer overrun)是c/c++开发中比较令人头痛的问题,vs2005中有若干编译选项

可以有效的帮助程序员定位这些问题:

1,/GS:优化模式下有效,检测缓冲区溢出,只能检测出覆盖了返回地址的情况.

2,/RTCs:优化模式下无效,检测缓冲区溢出

void Test2()
{
   char buffer1[100];
   char buffer2[100];
   buffer1[0] = 0;
   for (int i=0 ; i <= sizeof(buffer2); i++)
   {
      buffer2[i] = 'a';
   }
   buffer2[sizeof(buffer2)-1] = 0;//检测出buffer2溢出,上面的for中应该使用<而不是<=
   cout << buffer2 << '-' << buffer1 << endl;
}

注:以上方法只能检测栈中的内存溢出,对于堆的内存(new出来的内存)溢出无效.

3,/RTCc: 优化模式下无效,可以检测出数据截断的情况

void Test5(int value)
{
   unsigned char ch;
   ch = (unsigned char)value;//检测出错误!
}

4,/RTCu:优化模式下无效,检测使用未初始化的变量

void test()
{
    int i;
    int k = i * 100; //检测出错误!
}

参考:
1,http://msdn.microsoft.com/en-us/library/aa289171.aspx
2,http://msdn.microsoft.com/en-us/library/aa290051.aspx

转载于:https://www.cnblogs.com/corefans/archive/2008/12/18/1357845.html

vs/c++缓冲区溢出,未初始化变量检查相关推荐

  1. python变量初始化的位置不当、程序结果可能会出现问题_解决tensorflow由于未初始化变量而导致的错误问题...

    我写的这个程序 import tensorflow as tf sess=tf.InteractiveSession() x=tf.Variable([1.0,2.0]) a=tf.constant( ...

  2. [ARM-assembly]-全局变量/静态全局变量/初始化/未初始化变量的存放位置分析

    我们从汇编来看,各种变量在内存中的存放位置 1.使用交叉编译器将C语言转换成汇编 写一个C语言程序: static int x; static int y = 10; int z; int w = 2 ...

  3. 变量的初始化与使用C语言程序注释,c - (为什么)使用未初始化的变量未定义行为?...

    C标准为编译器提供了很大的优势来执行优化. 如果您假设一个简单的程序模型,其中未初始化的内存被设置为某个随机位模式,并且所有操作都按照它们的写入顺序执行,那么这些优化的后果可能会令人惊讶. 注意:以下 ...

  4. C语言中变量未初始化的处理

    实例测试1--DEV-C++环境 : #include <stdio.h> //全局整形变量 int int_var1; static int stc_int_var1; short in ...

  5. 堆栈的缓冲区溢出进不了系统_一文理解缓冲区溢出

    1 引言 "缓冲区溢出"对现代操作系统与编译器来讲已经不是什么大问题,但是作为一个合格的 C/C++ 程序员,还是完全有必要了解它的整个细节. 计算机程序一般都会使用到一些内存,这 ...

  6. C ++标准是否允许未初始化的bool使程序崩溃?

    本文翻译自:Does the C++ standard allow for an uninitialized bool to crash a program? I know that an " ...

  7. 游戏安全03:缓冲区溢出攻击简单解释

    文章目录 一.举例具体体现 二.缓冲区溢出攻击原理 (1)栈帧基础原理 (2)函数调用约定 (3)溢出攻击原理 (4)缓冲区溢出攻击分类和举例 1)没有保证足够的存储空间存储复制过来的数据 2)整数溢 ...

  8. CSP认证 202203-1 未初始化警告

    题目传送门 题目背景 一个未经初始化的变量,里面存储的值可能是任意的.因此直接使用未初始化的变量,比如将其赋值给另一个变量,并不符合一般的编程逻辑.代码中出现这种情况,往往是因为遗漏了初始化语句.或是 ...

  9. 4454. 未初始化警告(只是题的长别怕,详细解读)

    题目 一个未经初始化的变量,里面存储的值可能是任意的. 因此直接使用未初始化的变量,比如将其赋值给另一个变量,并不符合一般的编程逻辑. 代码中出现这种情况,往往是因为遗漏了初始化语句.或是打错了变量名 ...

最新文章

  1. js中Object类型和Array类型的变量被赋值(复制)给其他变量后,修改被赋值(复制)的新变量的值,会影响原始变量的值,这是为什么呢?
  2. linux添加审计账户_眼镜蛇W眼镜蛇白盒品白源代码审计工具 白帽子版
  3. 超1亿人选择朋友圈三天可见,背后的原因值得深思
  4. 读过的最好的epoll讲解
  5. mysql 组合索引 or_mysql索引优化实例(单列索引与组合索引)
  6. spring cloud微服务分布式云架构-commonservice-config配置服务搭建
  7. 谷歌发布 V8 Exploit 漏洞奖励计划,奖金加倍
  8. JavaScript执行环境
  9. 双轨制直销软件功能介绍
  10. 数学建模竞赛大汇总,别再被野鸡竞赛坑啦
  11. 吕林涛计算机网络知识点,计算机网络——习题与解析
  12. 2017 linux wine 迅雷,wine 迅雷下载安装(wine 迅雷极速版)【Linux上用迅雷7】
  13. 新站快速排名的seo优化流程
  14. 【02】Java进阶:04-String、StringBuilder、ArrayList
  15. java throw 和catch_Java catch与throw同时使用的操作
  16. prod和probor在matlab,智能控制讲义第六章Matlab在模糊控制中的应用.
  17. 两个PDF怎么合成在一起
  18. C# dotnet 获取某个字符所在 Unicode 字符平面映射
  19. 微信小程序顶部透明状态标题栏搜索栏与胶囊对齐
  20. VC知识库之应用控制

热门文章

  1. 深入react技术栈(3):React组件
  2. react学习(40)----react中的jsx简介
  3. react学习(26)---获取antdesign的form数据
  4. 前端学习(3162):react-hello-react之react插件的安装
  5. [js] json和对象有什么区别?
  6. 前端学习(2461):打包发布
  7. 前端学习(1762):前端调试值之如何让浏览器模拟传感器数据
  8. 前端学习(539):全屏布局得实现
  9. 线性系统的基本理论与运算
  10. Qt sqlit3的增、删、改、查、判断等基本操作接口