分类: C/C++
2008-05-16 11:26:22
局部变量i和函数内的数组buff都是分配在栈空间内的。这里栈分配了4个char大小的空间给buff,紧跟着i。注意栈的增长是由高到低的。
字符串“abcd”事实上是有5个字符的,'a','b','c','d','\0'的。看strcpy的实现,可以知道把这五个字符copy到以buff为首地址的空间。而buff的大小是4个字符的,多出的'\0'字符就覆盖了buff+4的空间内容。从栈的增长看出,i是刚好紧跟着buff的,所以'\0'就覆盖了i的原值。
----------------------------------------
栈分配i空间,紧跟分配4个char大小的空间给buff
由于栈的增长方向是由高到低的,比方说i的地址为0x1245,则buff【0】为0x1241,buff【1】为0x1242,buff【2】为0x1243,buff【3】为0x1244。这是它原文的解析。