MIPS:.asciiz的大小是多少?

6
确定 .asciiz 字符串的大小时,是否应考虑终止字符?
例如:
.data
string: .asciiz "Hello"

"string" 的大小是 5 或 6(字节)?

3
数据的大小包括字符串末尾的NULL字节,因此它占用了6个字节。然而,ASCIIZ字符串的长度为5个字符。我猜你想知道所使用的空间,那就是6个字节。 - gusbro
1
@gusbro 所以它是6个字节。谢谢。 - Ivan Gandacov
4个回答

4

如果您询问字符串在内存中占用多少字节,则为6个字节。

如果您询问计算字符串长度的函数(例如strlen C函数)应返回什么,则应该是5。


1

这个特定的asciiz字符串需要6个字节的存储空间。

在编程情境中,你会测量字符串大小为5。如strlen()所示。

使用此字符串时,很可能你的循环将测试NULL条件,并运行5次迭代。

在复制、存储此字符串时,你的代码很可能会循环5次,然后(循环外)在末尾添加一个额外的NULL '\0'字符,以维护NULL终止。因此目标存储空间必须比strlen()多1个。


1

同意Robert的说法,在这种情况下,内存中的字节总数为6。然而,正如Paxym所解释的那样,在高级语言中,它将测量字符串的“大小”为5。


-1

ASCII 中的每个字符占用 1 字节。如果你写下 "hello",它会占用 5 字节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接