字符串的对齐

The alignement of a string

在 x86 堆栈中,当存在 "string[=15=] + 4 NULLs" 时,字符数组(字符串)完成,但是:

| e | l | l | o |esp
| 0 | 0 | 0 | h |
| 0 | 0 | 0 | 0 |esp+8

数组的区间是[esp, esp+9]还是[esp, esp+11]? IE。 4 个 NULL 必须在位置 +{4,8,12, ...} 对齐,或者它们必须紧跟在第一个 NULL 之后(第一个字符串结束的地方)?

你错了。字符串数组是指针数组,每个指针指向一个字符串。指针数组以 NULL(4 字节指针)结束。数组中的每个字符串都可以位于内存中的任何位置,并且每个字符串都有自己的终止零字节。还不明白就画个图吧