确定 .asciiz 字符串的大小时,是否应考虑终止字符?
例如:
"string" 的大小是 5 或 6(字节)?
例如:
.data
string: .asciiz "Hello"
"string" 的大小是 5 或 6(字节)?
如果您询问字符串在内存中占用多少字节,则为6个字节。
如果您询问计算字符串长度的函数(例如strlen C函数)应返回什么,则应该是5。
这个特定的asciiz字符串需要6个字节的存储空间。
在编程情境中,你会测量字符串大小为5。如strlen()
所示。
使用此字符串时,很可能你的循环将测试NULL
条件,并运行5次迭代。
在复制、存储此字符串时,你的代码很可能会循环5次,然后(循环外)在末尾添加一个额外的NULL '\0'字符,以维护NULL
终止。因此目标存储空间必须比strlen()
多1个。
同意Robert的说法,在这种情况下,内存中的字节总数为6。然而,正如Paxym所解释的那样,在高级语言中,它将测量字符串的“大小”为5。
ASCII 中的每个字符占用 1 字节。如果你写下 "hello",它会占用 5 字节。