dh169游戏网

手机版

收藏本站

当前位置 :首页 > 安卓游戏 > 射击枪战

Stack Jump Tower 2.46.1

类型:射击枪战 平台:安卓

大小:51.3MB 时间:2024-05-14

游戏介绍

Stack Jump Tower目录

stripping tower是什么意思

stack damper是什么意思

什么是stack overflow

stripping tower是什么意思

stripping tower

[词典] 汽提塔;

[例句]Structure reformation of circulation pump within stripping tower in PTA plant

PTA装置汽提塔循环泵结构的改造

stack damper是什么意思

stack damper

[词典] 烟道气闸;

damper 英[?d?mp?(r)] 美['d?mp?r]

n. 减震器; (钢琴的) 制音器; (火炉等的) 风门; 使人扫兴的人(事);

adj. 潮湿的,不完全干燥的( damp的比较级 );

[例句]The cold weather put a damper on our plans

寒冷的天气给我们的计划泼了冷水。

[其他] 原型: damp 复数:dampers

什么是stack overflow

顾名思义,stack overflow 就是是栈溢出了。

在进行数值运算时,我们常常要和运算结果的溢出打交道。

数值运算结果可能上溢(overflow),也可能是下溢(underflow)。

不过栈的溢出显然只可能是上溢,即栈空间被用完了。

在提起“栈”(stack)这个概念的时候,千万不要忘记了它的兄弟“堆”(heap),也要切记不要把二者搞混了。

那么,什么时候会把给用完了呢?如果我们记得C程序中的局部变量是在栈中分配的,函数调用会占用一部分栈空间,则可以很容易地构造出相应的测试用例。

1、定义占用空间过大的局部变量所导致的栈溢出 C:\> more stack_local.c /* * Allocate too much memory from stack will cause stack overflow. */ #include int main(int argc, char *argv[]) { int foo[1000000]; return 0; } C:\> cl stack_local.c Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. stack_local.c Microsoft (R) Incremental Linker Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved. /out:stack_local.exe stack_local.obj C:\> stack_local 此时出现一个异常对话框:stack-local.jpg 。

2、函数递归调用导致的栈溢出 C:\> more stack_recursive.c /* * Infinite recursive calls will lead to stack overflow soon. */ #include static void foo(void); static void bar(void); int main(int argc, char *argv[]) { foo(); return 0; } static void foo(void) { bar(); } static void bar(void) { foo(); } C:\> cl stack_recursive.c Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. stack_recursive.c Microsoft (R) Incremental Linker Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved. /out:stack_recursive.exe stack_recursive.obj C:\> stack_recursive 该程序没声没息就结束了。

查看进程返回值能发现它其实是异常终止了。

只不过没有像 stack_local 那样弹出一个对话框。

C:\> echo %errorlevel% -1073741819 要搞清楚这两个程序为什么有这点细微的区别,可以查阅一下二者的汇编代码。

原来是 _chkstk() 在起作用,其中 stack_local 在程序初始加载时就会导致 _chkstk() 失败,触发异常。

而 stack_recursive 可以正确加载,并运行一段时间,然后导致栈溢出,并触发异常。

要正确处理栈溢出采用以下办法: (1)修正我们的程序,不要造成无穷递归或太深的递归。

我们可以把某些递归代码非递归化,例如那个经典的 qsort ,最好就用非递归的算法来实现,就比较皮实一点。

(2)修正我们的程序,不要定义过大的局部变量,特别是在定义大结构、大数组时要格外小心。

有时我们可能会用 _alloca() 这样的特殊函数直接在栈上分配空间,更要多加注意。

(3)利用编译器的特性,将进程允许的栈大小设置得大一些。

例如可以采用 MSC 中的 /STACK 参数开关。

(4)对于那些还可能导致栈溢出的代码,采用 Microsoft 的结构化异常处理或标准的 C++ 异常处理机制,结合 _resetstkoflw() 进行处理。

当然了,要是不嫌麻烦,我们也可以自己探测所用栈的大小,动态地检测是否可能导致栈溢出,以避免可能的异常。

dh169游戏网 www.dh169.com 版权所有 鄂ICP备2021009435号-6

dh169游戏网游戏下载基地温馨提示:适度游戏娱乐,沉迷游戏伤身,合理安排时间,享受健康生活

我们用心在做,为您提供更多好玩的 单机游戏下载大全中文版下载