0
点赞
收藏
分享

微信扫一扫

简单聊聊 ABAP 变量消耗的内存空间这个话题的试读版

​​简单聊聊 ABAP 变量消耗的内存空间这个话题的试读版​​


本教程之前的文章介绍了 ABAP 调试器的用法:

  • ​​13. 最浅显易懂的 SAPGUI 里 ABAP 调试器的使用方法介绍​​

有朋友向我咨询:ABAP 调试器里变量显示标签里,如果对于一个内表变量,Val 栏下的 ​​[1x3(28)]Standard Table​​ 是什么意思?

简单聊聊 ABAP 变量消耗的内存空间这个话题的试读版_内存空间

为了准确回答这个问题,我们就得简单了解下 ABAP 程序里的变量,在运行时消耗的内存空间这个问题。

在本教程第四篇文章,我们学习了 ABAP 编程语言里基本的数据结构:

  • ​​4. ABAP 标准培训教程 BC400 学习笔记之四:ABAP 编程语言的数据类型​​

回到本文开始的疑问。

看这段简单的 ABAP 代码:

TYPES: BEGIN OF ty_data,
name TYPE c,
age TYPE c LENGTH 2,
score TYPE c LENGTH 11,
END OF ty_data.

DATA: ls_data TYPE ty_data,
lt_data TYPE TABLE OF ty_data.

ls_data-name = 'c'.
ls_data-age = 'ab'.
APPEND ls_data TO lt_data.

定义了一个内表变量 ​​lt_data​​, 其行类型为一个结构,包含名叫 name,age 和 score 这三个字段,字段类型都为 c,长度分别为 1,2 和 11.

既然都是固定的字符类型,那么内表每一行占据的内存空间为 ( 1 + 2 + 11 ) × 2 = 28 字节。

简单聊聊 ABAP 变量消耗的内存空间这个话题的试读版_内存空间_02

所以 ​​[1x3(28)]Standard Table​​ 里的1,代表当前内表的记录数,3 代表每条记录的列数或者说字段个数,28 代表每条记录占据的字节大小。

当我们给行类型定义增添一个类型为 string 的字段 content 之后,我们发现每行占据的内存空间,从 28 个字节增加到了 36 个字节,多出来 8 个字节。

简单聊聊 ABAP 变量消耗的内存空间这个话题的试读版_字段_03

虽然我们尚未给 content 字段增添任何内容,这个字段包含的是空的初始值。那么这多出来的 8 个字节是做什么用的?

本文​​余下部分​​,详细介绍这多出来的 8 个字节是从哪里来的,以及这张图背后传递的信息。

简单聊聊 ABAP 变量消耗的内存空间这个话题的试读版_字段_04



举报

相关推荐

消耗内存的东东

0 条评论