在x86堆栈中,当有"字符串\ 0 + 4 NULLs"时,字符数组(字符串)结束,但是:
| e | l | l | o |esp
| 0 | 0 | 0 | h |
| 0 | 0 | 0 | 0 |esp+8
数组的间隔是[esp,esp + 9]还是[esp,esp + 11]?即4个NULL必须在位置+ {4,8,12,...}中对齐,或者它们必须紧跟在第一个NULL之后(第一个字符串完成的位置)?
答案 0 :(得分:1)
你错了。字符串数组是指针数组,每个指针指向一个字符串。指针数组由NULL(4字节指针)终止。数组中的每个字符串可以在内存中的任何位置,并且每个字符串都有自己的终止零字节。如果你仍然感到困惑,请制作一个图表。