1. 程式人生 > >1.strcpy使用註意

1.strcpy使用註意

class 覆蓋 增加 越界 test strcpy str1 light tr1

void test1()
{
char string[10];
char *str1 ="0123456789";
strcpy(string,str1);
}

  上述代碼問題?

字符串str1需要11字節才能存放下(包括末尾的‘\0’),而string只有10個字節的空間,strcpy會導致數組越界。

分析:

代碼本身沒有錯誤,如果將str1拷貝到string中,string的長度會增加,並且也可以正確的輸出string。
但是存在潛在的危險,string定義的長度是10,而拷入str1之後string的長度增為11,也就是說,在內存中,如果緊接string之後有內容,將被覆蓋,這樣會導致string之後的內存存取錯誤。

1.strcpy使用註意