zoukankan      html  css  js  c++  java
  • c++变量莫名其妙改变_内存覆盖

     内存覆盖是个很简单又很隐蔽的错误。如果在程序中发现某个数组a的一些结果被莫名奇妙改写了,但你可以很肯定你没有在代码中修改它们。很有可能内存被不小心覆盖了。例如:

        int b[100];

        int a[100];

       int c=102;

        b[c]=5;

       与数组a相邻的数组b不够大,开了b[100],程序中不小心给越界的b[102]赋值,那么就有可能造成数组a中间一些数值被覆盖(当然也可能有其他问题,如程序崩溃)。

        malloc()函数也可能导致类似的错误。如果函数的实参为 sizeof(int) ,用于生成一个整型数据需要的大小。如果你写成:  int* p = (int *) malloc (1);  代码也能通过编译,但事实上只分配了1个字节大小的内存空间,当你往里头存入一个整数,就会有3个字节无家可归,而直接住进邻居家!造成的结果是后面的内存中原有数据内容被改写。 

  • 相关阅读:
    spark 脚本示例
    R树的应用
    将博客搬至CSDN
    select
    注册页面的验证码的实现
    web项目.注册及登陆
    eclipse web 项目中遇到的问题总结
    Apache与Tomcat
    关于MVC整理
    JDBC
  • 原文地址:https://www.cnblogs.com/bester/p/3255794.html
Copyright © 2011-2022 走看看