字符串表示为char数组.例如,如果我在地址0x80000000处有一个字符串"abcdef",则以下是否正确?
0x80000008
0x80000004: 00 00 46 45
0x80000000: 44 43 42 41
Run Code Online (Sandbox Code Playgroud)
(在堆栈中,它会长大,所以我的地址会减少)
较低的地址始终是第一个 - 即使在堆栈中也是如此.所以你的榜样应该是:
80000000: 41 42 43 44
80000004: 45 46 00 00
Run Code Online (Sandbox Code Playgroud)您的示例实际上是字符串:"ABCDEF".字符串"abcdef"应为:
80000000: 61 62 63 64
80000004: 65 66 00 00
Run Code Online (Sandbox Code Playgroud)此外,在内存转储中,默认基数为16(十六进制),因此"0x"是多余的.请注意,字符代码也是十六进制的.例如,字符串"JKLMNOP"将是:
80000000: 4A 4B 4C 4D
80000000: 4E 4F 50 00
Run Code Online (Sandbox Code Playgroud)
通常不会在堆栈中放置任何字符串.仅在数据存储器中.有时在堆栈中放置指向字符串的指针,即字符串的起始地址.
您(和我的)示例涉及所谓的ASCII编码.但是有许多可能的字符编码方案.例如,EBCDIC也使用8位代码,但不同于ASCII.
但是8位代码不是强制性的.例如,UTF-32使用32位代码.此外,没有必要具有固定的代码大小.UTF-8使用1到6个字节的可变代码大小,具体取决于编码的字符.
| 归档时间: |
|
| 查看次数: |
740 次 |
| 最近记录: |