相鄰變數內容互相干擾的一個例子 (轉)

amyz發表於2007-08-14
相鄰變數內容互相干擾的一個例子 (轉)[@more@]

 相鄰變數內容互相干擾的一個例子:namespace prefix = o ns = "urn:schemas--com::office" />

-5-3

 用例:

void main()
{
char addrA[5], addrB[5];
printf("the address of addrA is: %d ", &addrA);
printf("the address of addrA[4] is: %d ", &addrA[4]);
printf("the address of addrB is: %d ", &addrB);
printf("the address of addrB[4] is: %d ", &addrB[4]);
scanf("%s", addrA);
scanf("%s", addrB);
printf("addrA: %s ", addrA);
printf("addrB: %s ", addrB);
}

  C++

執行平臺:

 

執行結果:

the address of addrA is: 2293616
the address of addrA[4] is: 2293620
the address of addrB is: 2293600
the address of addrB[4] is: 2293604
abcd
abcdefghijklmnopqrstuvwxtyzl
addrA: qrstuvwxtyzl
addrB: abcdefghijklmnopqrstuvwxtyzl 

幾點結論:

1、按變數出場次序從高址往低址依次分配內容。

2、兩個變數之間保留12個位元組的緩衝區。

3、C/C++語言不檢查陣列的邊界,這是導致錯誤的根本原因。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-956487/,如需轉載,請註明出處,否則將追究法律責任。

相關文章