我们在定义变量是,根据定义的位置不同,分为全局变量与局部变量。我出生在一个叫“舞阳”的小县城,在这个县城中也有人名“舞阳”,前一个作用于整个县城,后一个只作用于他个人。那么从变量值的存在生存期角度,又可分为静态存储方式和动态存储方式两类。

静态存储方式:是指在程序运行期间分配固定的存储空间方式。

动态存储方式:是在程序运行期间根据需要进行动态的分配存储空间的方式。

用户存储空间可分三部分:

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 脚本学习 -- 动态储存方式和静态储存方式的更多相关文章

  1. C++动态存储方式与静态存储方式

    如果从变量值存在的时间(即生存期)来分,可将程序中的变量分为:动态存储方式和静态存储方式.它们所占用的存储空间区域不同. C++存储空间区域 代码区:存放可执行程序的程序代码.静态存储区:存放静态变量 ...

  2. LoadRunner 脚本学习 -- 使用动态链接库

    DLL = Dynamic Link Library DLL最重要的一个特点就扩展应用程序的特性. 再强大的工具也有不是万能的,通过调用动态库的方法极大地增强loadrunner的功能.当你在用loa ...

  3. LoadRunner脚本关联动态数据的最简单方法

    为什么要关联动态数据呢?举个例子,在对我们平台的工作流性能测试时, 在待办任务里面选择一条记录执行发送操作,LoadRunner VuGen会详细记录下来流程发送操作的细节,但在回放脚本的时候会有问题 ...

  4. Loadrunner脚本学习总结

    1.1      web脚本录制选择Web(HTTP/HTML)协议: 注意录制脚本前选择如下协议: 1.2      脚本如果需要使用如下函数: web_reg_save_param.web_fin ...

  5. LoadRunner 脚本学习 -- 指针基础

    先搞清楚 ++a 和 a++的区别 ++a : 前缀++,  先自增,后表达式 a++ : 后缀++,  先表达式,后自增 前缀,自增立即生效. 后缀,下次才会看到效果. 一维数组的指针 Action ...

  6. LoadRunner 脚本学习 -- 随机函数运用

    直接上码 Action() { int randnum; randnum = rand()%+; lr_output_message("随机得到的数是:%d", randnum); ...

  7. LoadRunner 脚本学习 -- 读取文件内容

    随便创建个txt文档  输入点内容,例如 读取文件内前N个字符: Action() { long myfile; ; ]; char *filename = "E:\\kkk.txt&quo ...

  8. LoadRunner脚本编写(转)

    性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不多了.还有非计算机专业出身的测试员 ...

  9. LoadRunner脚本编写

    性能測试project师要懂代码么?答案是必须的.好多測试员觉得在loadrunner中编写脚本非常难非常牛X ,主要是大多測试人员并未做过开发工作,大学的那点程序基础也忘记的几乎相同了. 还有非计算 ...

随机推荐

  1. INNODB自增主键的一些问题

    背景: 自增长是一个很常见的数据属性,在MySQL中大家都很愿意让自增长属性的字段当一个主键.特别是InnoDB,因为InnoDB的聚集索引的特性,使用自增长属性的字段当主键性能更好,这里要说明下自增 ...

  2. Python—>Mysql—>Dbvisualizer

    MySQLdb: https://pypi.python.org/pypi/MySQL-python/1.2.4 import MySQLdb 1.Download Connector/Python: ...

  3. IOS-ARC和垃圾回收机制

    ARC是编译层面的东西,垃圾回收是程序运行以后的机制,两者不可混为一谈 苹果觉得垃圾回收这种严重影响电源使用效率的特性,同移动设备天生的实时性是相冲突的.但是在iOS 5当中苹果引入了自动内存管理机制 ...

  4. VS2013调试时,IIS Express Worker Process 已停止工作

    之前调试都没有报错的,今天突然报错了,然后网上找了下资料,很快解决了问题 这是我报错的提示 解决办法: 用管理员身份运行CMD,输入netsh winsock reset并回车(注意,必须是已管理员身 ...

  5. 配置TFS2010的用户截图

    先要添加一个管理用户

  6. Hibernate查询语句

    1 hql查询 Hibernate的查询语句,hiberante提供的面向对象的查询语言,和sql语句的语法的相似.而且严格区分大小写. 1.1 from字句 /** * hql: from 字句 * ...

  7. Windows Form 中快捷键设置

    在Windows Form程序中使用带下划线的快捷键只需要进行设置: 就能够工作.

  8. 不同版本CUDA编程的问题

    1 无法装上CUDA的toolkit 卸载所有的NVIDIA相关的app,包括NVIDIA的显卡驱动,然后重装. 2之前的文件打不开,one or more projects in the solut ...

  9. NYOJ题目273字母小游戏

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAswAAAIZCAIAAAA9QP7RAAAgAElEQVR4nO3dPXKjzBqG4bMJ5VqIU2

  10. Hibernate中一对多和多对一关系

    1.单向多对一和双向多对一的区别? 只需要从一方获取另一方的数据时 就使用单向关联双方都需要获取对方数据时 就使用双向关系 部门--人员 使用人员时如果只需要获取对应部门信息(user.getdept ...