LoadRunner 脚本学习 -- 动态储存方式和静态储存方式
我们在定义变量是,根据定义的位置不同,分为全局变量与局部变量。我出生在一个叫“舞阳”的小县城,在这个县城中也有人名“舞阳”,前一个作用于整个县城,后一个只作用于他个人。那么从变量值的存在生存期角度,又可分为静态存储方式和动态存储方式两类。
静态存储方式:是指在程序运行期间分配固定的存储空间方式。
动态存储方式:是在程序运行期间根据需要进行动态的分配存储空间的方式。
用户存储空间可分三部分:
1、程序区
2、静态存储区
3、动态存储区
全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序运行完毕就释放,在程序执行过程中它们占据固定的存储单元,而不动态地进行分配和释放。
动态存储区存放以下数据:
(1)函数形式参数
(2)自动变量(未加static声明的局部变量)
(3)函数调用时的现场保护和返回地址
上面这些数据,在函数开始调用时分配动态空间,函数结果时释放这些空间。
在C语言中,每个变量和函数有两个属性:数据类型和数据的存储类别
* 自动(auto)变量
函数中的局部变量,如不专门的声明为static存储类别,都是动态地分配存储空间的。
* 静态(static)声明局部变量
有时希望函数中的局部变量的值在函数调用结束后不消失而保留,这时就应该指定局部变量为“静态局部变量”,用static关键字。
* 寄存器(register)变量
为了提高效率,C语言允许把局部变量的值放在CPU中的寄存器中,这种变量叫“寄存器变量”,用关键字register变量。
Action()
{
auto int kkk = ;
static int ttt =; kkk = kkk+;
ttt = ttt+; lr_output_message("kkk=%d",kkk);
lr_output_message("ttt=%d",ttt);
return ;
}
kkk 为动态局部变量,而ttt则为静态局部变量。迭代3次,看下结果就能很容易看出动态变量和静态变量的区别
Starting iteration 1.
Starting action Action.
Action.c(9): kkk=2
Action.c(10): ttt=2
Ending action Action.
Ending iteration 1.
Starting iteration 2.
Starting action Action.
Action.c(9): kkk=2
Action.c(10): ttt=3
Ending action Action.
Ending iteration 2.
Starting iteration 3.
Starting action Action.
Action.c(9): kkk=2
Action.c(10): ttt=4
Ending action Action.
Ending iteration 3.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
LoadRunner 脚本学习 -- 动态储存方式和静态储存方式的更多相关文章
- C++动态存储方式与静态存储方式
如果从变量值存在的时间(即生存期)来分,可将程序中的变量分为:动态存储方式和静态存储方式.它们所占用的存储空间区域不同. C++存储空间区域 代码区:存放可执行程序的程序代码.静态存储区:存放静态变量 ...
- LoadRunner 脚本学习 -- 使用动态链接库
DLL = Dynamic Link Library DLL最重要的一个特点就扩展应用程序的特性. 再强大的工具也有不是万能的,通过调用动态库的方法极大地增强loadrunner的功能.当你在用loa ...
- LoadRunner脚本关联动态数据的最简单方法
为什么要关联动态数据呢?举个例子,在对我们平台的工作流性能测试时, 在待办任务里面选择一条记录执行发送操作,LoadRunner VuGen会详细记录下来流程发送操作的细节,但在回放脚本的时候会有问题 ...
- Loadrunner脚本学习总结
1.1 web脚本录制选择Web(HTTP/HTML)协议: 注意录制脚本前选择如下协议: 1.2 脚本如果需要使用如下函数: web_reg_save_param.web_fin ...
- LoadRunner 脚本学习 -- 指针基础
先搞清楚 ++a 和 a++的区别 ++a : 前缀++, 先自增,后表达式 a++ : 后缀++, 先表达式,后自增 前缀,自增立即生效. 后缀,下次才会看到效果. 一维数组的指针 Action ...
- LoadRunner 脚本学习 -- 随机函数运用
直接上码 Action() { int randnum; randnum = rand()%+; lr_output_message("随机得到的数是:%d", randnum); ...
- LoadRunner 脚本学习 -- 读取文件内容
随便创建个txt文档 输入点内容,例如 读取文件内前N个字符: Action() { long myfile; ; ]; char *filename = "E:\\kkk.txt&quo ...
- LoadRunner脚本编写(转)
性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不多了.还有非计算机专业出身的测试员 ...
- LoadRunner脚本编写
性能測试project师要懂代码么?答案是必须的.好多測试员觉得在loadrunner中编写脚本非常难非常牛X ,主要是大多測试人员并未做过开发工作,大学的那点程序基础也忘记的几乎相同了. 还有非计算 ...
随机推荐
- progressBar走马灯设置
初始值Visible = false; 让progressBar1出现时: progressBar1.Visible = true; progressBar1.Style = ProgressBarS ...
- PLSQL
select t.*,rowid from Table t; 编辑器设置
- 【转】Android Support v4、v7、v13的区别和应用场景
google提供了Android Support Library package 系列的包来保证来高版本sdk开发的向下兼容性,即我们用4.x开发时,在1.6等版本上,可以使用高版本的有些特性,如fr ...
- drupal记录(一)
翻译包下载网址:locallize.drupal.org 中文模块 local 自动下载模块 L10n_update 第三方menu菜单 admin menu,menu bar 打开这个后要关闭系统自 ...
- 如何让两个 并列的div高度相等
哪个div Height值大,就将其值赋给Height值小的div,从而使2个div高度始终保持一致. function $(id){ return document.getElementById(i ...
- 【leetcode】Text Justification(hard) ☆
Given an array of words and a length L, format the text such that each line has exactly L characters ...
- IOS- DocumentInteraction Controllerl的使用
iOS提供了使用其他app预览文件的支持,这就是Document Interaction Controller.此外,iOS也支持文件关联,允许其他程序调用你的app打开某种文件.而且,从4.2开始, ...
- PHP工厂模式的研究
工厂方法模式 把 创造者类 和要生产的 产品类 分离.创建者是一个工厂类,其定义了产品生产的类方法.一般情况下,创建者类的每个子类实例化一个相应的产品子类. 下面是单个产品的实现代码: <?ph ...
- iOS 多线程及其他补充
NSOperation NSOperation是个抽象类,并不具备封装操作的能力,必须使用它的子类 NSInvocationOperation 如果直接执行NSInvocationOperatio ...
- Myeclipse编写struts程序
说到struts则必须要谈到MVC模式(Model2) 什么是MVC模式.随着应用系统的逐渐增大,系统的业务逻辑复杂度以几何级数方式增加,在这样的情况下,如果还是把所有的处理逻辑都放在JSP页面中,那 ...