精华内容
下载资源
问答
  • 2018-11-17 20:50:52

    程序源码

    Sub tt()
    Dim i, j, l, m, n As Double//定义类型
    For i = 2 To 100//从2到100 闭区间
      For j = 2 To 100
    k = Sheet1.Cells(i, j)//把i行j列的内容取出来
    l = Sheet1.Cells(i, i)
    m = Sheet1.Cells(j, j)
    n = k / ((l * m) ^ (1 / 2))
    Sheet2.Cells(i, j) = 1 - n //把1-n的内容存到sheet2的i行j列

    Next j //下一个
    Next i

    End Sub

    错误原因:sheet1中没有100行或者100列,导致溢出;还有可能是经过计算的的数值超出了定义类型的范围,具体官方解释如下;

    溢出(错误 6)

    在尝试进行的分配超出分配目标的限制时,会导致出现溢出。 此错误具有以下原因和解决方法:

    • 分配、计算或数据类型转换的结果太大,无法在此类变量允许的值的范围内表示。

      将值赋给可保存更大范围的值的类型的变量。

    • 属性的分配超出其可接受的最大值。

      请确保您的分配适合其目标属性的范围。

    • 尝试使用计算中的数字,并且该数字将强制转换为一个整数,但结果大于该整数。 例如:

    • VB复制

        Dim x As Long 
            x = 2000 * 365   ' Error: Overflow
      

      若要处理此情况,请键入数字,如下所示:

      VB复制

        Dim x As Long 
            x = 2000 * 365   ' Error: Overflow
      

      VB复制

        Dim x As Long 
            x = CLng(2000) * 365
      

      若要处理此情况,请键入数字,如下所示:

      VB复制

        Dim x As Long 
            x = CLng(2000) * 365
      
    更多相关内容
  • 数据溢出什么意思

    千次阅读 2021-07-28 10:41:13
    原标题:数据溢出什么意思数据溢出在计算机中,当要表示的数据超出计算机所使用的数据的表示范围时,则产生数据的溢出溢出原因数据类型超过了计算机字长的界限就会出现数据溢出的情况。导致内存溢出问题的原因有...

    原标题:数据溢出是什么意思

    数据溢出

    在计算机中,当要表示的数据超出计算机所使用的数据的表示范围时,则产生数据的溢出。

    溢出原因

    数据类型超过了计算机字长的界限就会出现数据溢出的情况。导致内存溢出问题的原因有很多,比如:

    (1) 使用非类型安全(non-type-safe)的语言如 C/C++ 等。

    (2) 以不可靠的方式存取或者复制内存缓冲区。

    (3)编译器设置的内存缓冲区太靠近关键数据结构。

    7ce959b408cf7f2dfa36a612cfe4b16d.png

    因素分析

    1.内存溢出问题是 C 语言或者 C++ 语言所固有的缺陷,它们既不检查数组边界,又不检查类型可靠性(type-safety)。众所周知,用 C/C++ 语言开发的程序由于目标代码非常接近机器内核,因而能够直接访问内存和寄存器,这种特性大大提升了 C/C++ 语言代码的性能。只要合理编码,C/C++应用程序在执行效率上必然优于其它高级语言。然而,C/C++ 语言导致内存溢出问题的可能性也要大许多。其他语言也存在内存溢出问题,但它往往不是程序员的失误,而是应用程序的运行时环境出错所致。

    969bddd7f2677f3c532ae2729bc5db47.png

    2. 当应用程序读取用户(也可能是恶意攻击者)数据,试图复制到应用程序开辟的内存缓冲区中,却无法保证缓冲区的空间足够时(换言之,假设代码申请了 N 字节大小的内存缓冲区,随后又向其中复制超过 N 字节的数据)。内存缓冲区就可能会溢出。想一想,如果你向 12 盎司的玻璃杯中倒入 16 盎司水,那么多出来的 4 盎司水怎么办?当然会满到玻璃杯外面了!

    38621bb7fcd70550c857601d6f5a63be.png

    3. 最重要的是,C/C++编译器开辟的内存缓冲区常常邻近重要的数据结构。假设某个函数的堆栈紧接在在内存缓冲区后面时,其中保存的函数返回地址就会与内存缓冲区相邻。此时,恶意攻击者就可以向内存缓冲区复制大量数据,从而使得内存缓冲区溢出并覆盖原先保存于堆栈中的函数返回地址。这样,函数的返回地址就被攻击者换成了他指定的数值;一旦函数调用完毕,就会继续执行“函数返回地址”处的代码。非但如此,C++ 的某些其它数据结构,比如 v-table 、例外事件处理程序、函数指针等,也可能受到类似的攻击。返回搜狐,查看更多

    责任编辑:

    展开全文
  • DY溢出指数计算代码

    2020-12-17 11:29:42
    用于计算DY溢出指数 Diebold F X, Yilmaz K. Better to give than to receive: Predictive directional measurement of volatility spillovers. International Journal of Forecasting, 2012, 28(1): 57-66.
  • 主要介绍了编写Java代码制造一个内存溢出的情况,或许这种有意制造能够更好地帮助理解Java中的内存溢出情况XD 需要的朋友可以参考下
  • 代码演示了缓冲区溢出的攻击与防范。 关键字:buffer OverFlow,缓冲区溢出
  • 缓冲区溢出原理及植入代码的分析研究
  • 主要介绍了Java编程常见内存溢出异常与代码示例,具有一定参考价值,需要的朋友可以了解下。
  • 缓冲区溢出教程及配套代码 缓冲区溢出教程及配套光盘 (c语言 汇编 工具)
  • Matlab溢出问题的研究代码代码列举了几种常见的溢出问题。
  • 73-看门狗溢出测试(51单片机C语言实例Proteus仿真和代码)73-看门狗溢出测试(51单片机C语言实例Proteus仿真和代码)73-看门狗溢出测试(51单片机C语言实例Proteus仿真和代码)73-看门狗溢出测试(51单片机C语言实例...
  • 基于TVP-VAR模型的动态溢出指数的计算R代码
  • 代码实现一个内存溢出

    千次阅读 2022-04-06 20:57:17
    一次内存泄漏似乎没什么影响,但是多次堆积后会发生内存溢出 内存溢出Out of Memory:是指程序在运行时获取内存,没有足够的内存供请求者请求 注:在java虚拟机中,除了程序计数器,其他几个运行时区域都有可能发生内存...

    概念

    内存泄漏Memory Leak:是指程序在申请内存后,无法释放已经获取的内存;一次内存泄漏似乎没什么影响,但是多次堆积后会发生内存溢出

    内存溢出Out of Memory:是指程序在运行时获取内存,没有足够的内存供请求者请求

    :在java虚拟机中,除了程序计数器,其他几个运行时区域都有可能发生内存溢出

    Java堆溢出

    java堆用于存储对象实例,只要不断地创建对象,并且保证GC避免清除这些对象,那么随着总容量到达堆的最大容量就会产生内存溢出

    代码实现堆溢出(提前设置好XMS和XMX)

      static class OOMbject{
    
        }
        public static void HeapOOM(){
            List<OOMbject> list = new ArrayList<>();
            while (true){
                list.add(new OOMbject());
            }
        }
    

    java堆内存的Out of MemoryError异常是实际应用中最常见的内存溢出异常情况 出现堆内存溢出时,会伴随Java heap space

    虚拟机栈和本地方法栈溢出

    关于虚拟机栈和本地方法栈,在《java虚拟机规范》中描述了两种异常

    • 如果线程请求的栈深度大于虚拟机所允许的最大深度,抛出StackOverflowError异常
    • 如果虚拟机的栈允许动态扩展,当前栈容量无法申请足够的内存时,将抛出OutOfMemoryError

    以下使用两种代码方式实现内存溢出:

    private int stackLength = 0;
    private void stackLeak(){
        stackLength++;
        stackLeak();
    }
     public static void main(String[] args) {
            JVMDemo jvmDemo = new JVMDemo();
         //  HeapOOM();
            try{
                jvmDemo.stackLeak();
            }catch (Throwable e){
                System.out.println("stackLength="+jvmDemo.stackLength);
                throw e;
            }
    
    
        }
    

    在这里插入图片描述

    结果:抛出stackOverflowError异常

    public  void test() {
        long unused1, unused2, unused3, unused4, unused5,
                unused6, unused7, unused8, unused9, unused10,
                unused11, unused12, unused13, unused14, unused15,
                unused16, unused17, unused18, unused19, unused20,
                unused21, unused22, unused23, unused24, unused25,
                unused26, unused27, unused28, unused29, unused30,
                unused31, unused32, unused33, unused34, unused35,
                unused36, unused37, unused38, unused39, unused40,
                unused41, unused42, unused43, unused44, unused45,
                unused46, unused47, unused48, unused49, unused50,
                unused51, unused52, unused53, unused54, unused55,
                unused56, unused57, unused58, unused59, unused60,
                unused61, unused62, unused63, unused64, unused65,
                unused66, unused67, unused68, unused69, unused70,
                unused71, unused72, unused73, unused74, unused75,
                unused76, unused77, unused78, unused79, unused80,
                unused81, unused82, unused83, unused84, unused85,
                unused86, unused87, unused88, unused89, unused90,
                unused91, unused92, unused93, unused94, unused95,
                unused96, unused97, unused98, unused99, unused100;
    
        stackLength++;
        test();
    
        unused1 = unused2 = unused3 = unused4 = unused5 =
        unused6 = unused7 = unused8 = unused9 = unused10 =
        unused11 = unused12 = unused13 = unused14 = unused15 =
        unused16 = unused17 = unused18 = unused19 = unused20 =
        unused21 = unused22 = unused23 = unused24 = unused25 =
        unused26 = unused27 = unused28 = unused29 = unused30 =
        unused31 = unused32 = unused33 = unused34 = unused35 =
        unused36 = unused37 = unused38 = unused39 = unused40 =
        unused41 = unused42 = unused43 = unused44 = unused45 =
        unused46 = unused47 = unused48 = unused49 = unused50 =
        unused51 = unused52 = unused53 = unused54 = unused55 =
        unused56 = unused57 = unused58 = unused59 = unused60 =
        unused61 = unused62 = unused63 = unused64 = unused65 =
        unused66 = unused67 = unused68 = unused69 = unused70 =
        unused71 = unused72 = unused73 = unused74 = unused75 =
        unused76 = unused77 = unused78 = unused79 = unused80 =
        unused81 = unused82 = unused83 = unused84 = unused85 =
        unused86 = unused87 = unused88 = unused89 = unused90 =
        unused91 = unused92 = unused93 = unused94 = unused95 =
        unused96 = unused97 = unused98 = unused99 = unused100 = 0;
    }
    

    在这里插入图片描述

    结果:抛出stackOverflowError异常

    两种方式表明:无论栈帧太大还是虚拟机栈容量太小,当新的栈帧内存无法分配的时候,都会抛出StackOverflowOver,但是如果允许动态扩展栈容量大小的虚拟机上,相同的代码会导致不一样情况,譬如远古时代的classic虚拟机,这个虚拟机支持动态扩展栈内存的容量.

    方法区和运行时常量池溢出

    Set<String> set = new HashSet<String>();
    int i = 0;
    while (true){
        set.add(String.valueOf(i++).intern());
    }
    

    在运行时常量池溢出时,在OutOfMemoryError异常后面跟随的提示信息时"PermGenspace’

    补充:运行时常量池是方法区的一部分,String.intern()是一个本地方法,它的作用是如果字符串常量池已经包含一个等于此String对象的字符串,则会返回代表其引用对象,否则就会把此string对象包含的字符串添加到字符串常量池中,并返回String对象

    Intern测试一:

    String str1 = "Intern测试";
    System.out.println(str1.intern()==str1);
    String str2 ="java";
    System.out.println(str2.intern()==str2);
    输出结果:true
            true
    

    Intern测试二:

    String s1 = "abc";
    String s2 = "abc";
    String s3 = new String("abc");
    String s4 = s3.intern();
    
    System.out.println(s1 == s2);
    System.out.println(s1 == s3);
    System.out.println(s1.equals(s3));
    System.out.println(s1 == s4);
    输出结果:true
        false
        true
        true
    

    intern测试三:

    String str1 = new StringBuilder("Intern").append("测试").toString();
    System.out.println(str1.intern()==str1);
    String str2 = new StringBuilder("ja").append("va").toString();
    System.out.println(str2.intern()==str2);
    输出结果:true
       	 false
    

    str2比较返回false,这是因为StringBuilder.toString函数就是调用String的构造方法,new了一个String对象,"java"这个字符串在执行StringBuilder.toString()之前就已经出现过了,字符串常量池中已经有了它的引用,不符合intern方法要求首次遇到的原则,而"intern测试"不在常量池中,要加入到常量池中,再返回原来字符串的引用.也就是说intern方法只有第一次加入常量池才会返回原字符串的引用

    展开全文
  • 内容索引:Delphi源码,系统相关,溢出 Delphi演示缓冲区溢出代码,用于堆栈溢出测试,不能超出6个字符。
  • 当初面试官让我现场手写内存溢出案例代码,我就以Java代码的方式列举了几个典型的内存溢出案例。今天分享给大家,希望大家在日常工作中,尽量避免写这些low水平的代码

    大家好,我是冰河~~

    作为程序员,多多少少都会遇到一些内存溢出的场景,如果你还没遇到,说明你工作的年限可能比较短,或者你根本就是个假程序员!哈哈,开个玩笑。

    当初面试官让我现场手写内存溢出案例代码,我就以Java代码的方式列举了几个典型的内存溢出案例。今天分享给大家,希望大家在日常工作中,尽量避免写这些low水平的代码。

    小伙伴们点赞,收藏,评论,走起呀

    我们先来看看今天要介绍哪些内存溢出案例,冰河这里总结了一张图,如下所示。

    说干就干,咱们开始吧!!

    定义主类结构

    首先,我们创建一个名称为BlowUpJVM的类,之后所有的案例实验都是基于这个类进行。如下所示。

    public class BlowUpJVM {  
    } 
    

    栈深度溢出

    public static void  testStackOverFlow(){ 
          BlowUpJVM.testStackOverFlow(); 
    } 
    

    栈不断递归,而且没有处理,所以虚拟机栈就不断深入不断深入,栈深度就这样溢出了。

    永久代内存溢出

    public static void testPergemOutOfMemory1(){ 
       //方法一失败 
       List<String> list = new ArrayList<String>(); 
       while(true){ 
          list.add(UUID.randomUUID().toString().intern()); 
       } 
    } 
    

    打算把String常量池堆满,没想到失败了,JDK1.7后常量池放到了堆里,也能进行垃圾回收了。

    然后换种方式,使用cglib,用Class把老年代取堆满

    public static void testPergemOutOfMemory2(){ 
       try { 
          while (true) { 
             Enhancer enhancer = new Enhancer(); 
             enhancer.setSuperclass(OOM.class); 
             enhancer.setUseCache(false); 
             enhancer.setCallback(new MethodInterceptor() { 
                @Override 
                public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { 
                   return proxy.invokeSuper(obj, args); 
                } 
             }); 
             enhancer.create(); 
          } 
       } 
       catch (Exception e){ 
          e.printStackTrace(); 
       } 
    } 
    

    虚拟机成功内存溢出了,那JDK动态代理产生的类能不能溢出呢?

    public static void testPergemOutOfMemory3(){ 
       while(true){ 
       final OOM oom = new OOM(); 
       Proxy.newProxyInstance(oom.getClass().getClassLoader(), oom.getClass().getInterfaces(), new InvocationHandler() { 
             public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 
                Object result = method.invoke(oom, args); 
                return result; 
             } 
          }); 
       } 
    } 
    

    事实表明,JDK动态代理差生的类不会造成内存溢出,原因是:JDK动态代理产生的类信息,不会放到永久代中,而是放在堆中。

    本地方法栈溢出

    public static void testNativeMethodOutOfMemory(){ 
       int j = 0; 
       while(true){ 
          Printer.println(j++); 
          ExecutorService executors = Executors.newFixedThreadPool(50); 
          int i=0; 
          while(i++<10){ 
             executors.submit(new Runnable() { 
                public void run() { 
                } 
             }); 
          } 
       } 
    } 
    

    这个的原理就是不断创建线程池,而每个线程池都创建10个线程,这些线程池都是在本地方法区的,久而久之,本地方法区就溢出了。

    JVM栈内存溢出

    public static void testStackOutOfMemory(){ 
        while (true) {   
                Thread thread = new Thread(new Runnable() {   
                       public void run() { 
                              while(true){ 
                          } 
                       }   
                });   
                thread.start();   
         }   
    } 
    

    线程的创建会直接在JVM栈中创建,但是本例子中,没看到内存溢出,主机先挂了,不是JVM挂了,真的是主机挂了,无论在mac还是在windows,都挂了。

    温馨提示,这个真的会死机的。

    堆溢出

    public static void testOutOfHeapMemory(){ 
       List<StringBuffer> list = new ArrayList<StringBuffer>(); 
       while(true){ 
          StringBuffer B = new StringBuffer(); 
          for(int i = 0 ; i < 10000 ; i++){ 
             B.append(i); 
          } 
          list.add(B); 
       } 
    } 
    

    不断往堆中塞新增的StringBuffer对象,堆满了就直接溢出了。

    测试案例完整代码

    public class BlowUpJVM {
        //栈深度溢出
        public static void  testStackOverFlow(){ 
          	BlowUpJVM.testStackOverFlow(); 
    	} 
        
        //不能引起永久代溢出
        public static void testPergemOutOfMemory1(){ 
           //方法一失败 
            List<String> list = new ArrayList<String>(); 
           while(true){ 
              list.add(UUID.randomUUID().toString().intern()); 
           } 
        } 
        
        //永久代溢出
        public static void testPergemOutOfMemory2(){ 
           try { 
              while (true) { 
                 Enhancer enhancer = new Enhancer(); 
                 enhancer.setSuperclass(OOM.class); 
                 enhancer.setUseCache(false); 
                 enhancer.setCallback(new MethodInterceptor() { 
                    @Override 
                    public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { 
                       return proxy.invokeSuper(obj, args); 
                    } 
                 }); 
                 enhancer.create(); 
              } 
           } 
           catch (Exception e){ 
              e.printStackTrace(); 
           } 
        } 
        
        //不会引起永久代溢出
        public static void testPergemOutOfMemory3(){ 
           while(true){ 
           final OOM oom = new OOM(); 
           Proxy.newProxyInstance(oom.getClass().getClassLoader(), oom.getClass().getInterfaces(), new InvocationHandler() { 
                 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 
                    Object result = method.invoke(oom, args); 
                    return result; 
                 } 
              }); 
           } 
        } 
        
        //本地方法栈溢出
        public static void testNativeMethodOutOfMemory(){ 
           int j = 0; 
           while(true){ 
              Printer.println(j++); 
              ExecutorService executors = Executors.newFixedThreadPool(50); 
              int i=0; 
              while(i++<10){ 
                 executors.submit(new Runnable() { 
                    public void run() { 
                    } 
                 }); 
              } 
           } 
        } 
        
        //JVM内存溢出
        public static void testStackOutOfMemory(){ 
            while (true) {   
                    Thread thread = new Thread(new Runnable() {   
                           public void run() { 
                                  while(true){ 
                              } 
                           }   
                    });   
                    thread.start();   
             }   
        } 
        
        //堆溢出
        public static void testOutOfHeapMemory(){ 
           List<StringBuffer> list = new ArrayList<StringBuffer>(); 
           while(true){ 
              StringBuffer B = new StringBuffer(); 
              for(int i = 0 ; i < 10000 ; i++){ 
                 B.append(i); 
              } 
              list.add(B); 
           } 
        } 
    } 
    

    写在最后

    如果你想进大厂,想升职加薪,或者对自己现有的工作比较迷茫,都可以私信我交流,希望我的一些经历能够帮助到大家~~

    推荐阅读:

    最后,附上并发编程需要掌握的核心技能知识图,祝大家在学习并发编程时,少走弯路。

    在这里插入图片描述

    好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,我是冰河,我们下期见~~

    展开全文
  • 分析缓冲区溢出及其溢出植入代码的组成结构,指出相应的防御措施;通过分析溢出和植入代码的组成结构,给出缓冲区溢出的一般规律和溢出攻击植入代码的结构特征;最后讨论如何根据溢出规律和植入代码的结构特征,采取...
  • aspcode确实算得上比较经典的堆溢出利用代码,原来发布的aspcode.c代码里面用于各种调试的垃圾代码比较多,很多人看不怎么明白。这个是自己用的一直没有对外发布的“潜入者”版本。利用代码已经整理出远程溢出漏洞...
  • 溢出代码 教你大神的网络攻防 网站溢出漏洞
  • 代码溢出初探

    2007-12-25 16:15:18
    代码的缓冲区溢出初探
  • Q版缓冲区溢出教程源代码 本书附的源代码
  • 本书定位于初学缓冲区溢出利用的读者;并照顾想学习缓冲区溢出技术的朋友。本书的目的是用幽默的语言和...本书没有枯燥的、大段汇编代码的解释;没有复杂的、Windows系统结构的定义,阅读起来不会有混混欲睡的乏味感!
  • 溢出(StackOverflowError) 堆溢出(OutOfMemoryError:Java heap space) 永久代溢出(OutOfMemoryError: PermGen space) 直接内存溢出 一、堆溢出 创建对象时如果没有可以分配的堆内存,JVM就会抛出...
  • 基于源代码扫描的缓冲区溢出检测方法,王晓宇,温巧燕,现有的缓冲区溢出检测技术大多都为静态检测技术,缺点是适应性不强,存在大量误报。本文提出了一种新的检测缓冲区溢出的方法和思
  • 什么是栈溢出和堆溢出

    千次阅读 2019-06-14 12:31:41
    溢出是由于C语言系列没有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大小,因此当这个数据足够大的时候,将会溢出缓冲区的范围。 堆溢出的产生是由于过多的函数调用,导致调用堆栈无法容纳这些调用的...
  • 缓冲区溢出是很容易被攻击者利用的攻击,在被覆盖的指令地址位置上编写自己的攻击代码,被攻击方程序运行时,会跳转到攻击者编写的代码位置上,开始运行攻击方的代码,从而攻击者实现了攻击与破坏。
  • 1. 栈溢出(StackOverflowError) 2. 堆溢出(OutOfMemoryError:Java heap space) 3. 永久代溢出(OutOfMemoryError: PermGen space) 4. 直接内存溢出
  • 复制代码 代码如下: PHPExcel_Settings::setCacheStorageMethod() 来设置不同的缓存方式,已达到降低内存消耗的目的! 1、将单元格数据序列化后保存在内存中 复制代码 代码如下: PHPExcel_...
  • 什么是缓冲区溢出?有什么危害?原因是什么

    万次阅读 多人点赞 2018-09-22 09:03:48
    缓冲区溢出是指当计算机向缓冲区填充... 2、跳转并且执行一段恶意代码  原因:造成缓冲区溢出的主要原因是程序中没有仔细检查用户输入。    所谓缓冲区可以更抽象地理解为一段可读写的内存区域,缓冲区攻击的...
  • C语言缓冲区溢出实例

    2015-06-05 16:10:26
    自己动手实现的缓冲区溢出实例,参考0Day安全,整个文档包含5个部分的代码,分别如下: 1.反汇编修改程序的例子 2.1-缓冲区溢出-修改邻接变量 2.2-缓冲区溢出-修改执行流程 2.3-缓冲区溢出-植入代码 寻找messagebox...
  • windwos操作系统下缓冲区溢出演示源代码,信息安全类的老师上课非常实用的小例子
  • 缓冲区溢出程序代码分析 缓冲溢出是指一种攻击系统的手段,通过往程序的缓冲区中写入超出其长度的内容造成溢出,从而破坏程序的堆栈,使程序转而执行其它指令,而达到攻击的目的。分布式拒绝服务(ddos)的入侵者...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 402,381
精华内容 160,952
关键字:

代码溢出是什么意思