
int (const int src[16])
{
int val1=0;
int dst[16]={0};
int val2=0;
const int *psrc=src;
fprintf(stdout,"size of src=%lun",sizeof(src));
//问题2:如下代码有什么副作用?
for(int i=0;i<=16;i++)//越dst[16]界
{
dst[i]=*psrc+i;
psrc++;
}
return 0;
}
常说:
- 栈和堆的区别中,有一点是,栈的地址从高地址到低地址生长;
因此在栈中:
val1------高地址
bigger than
dst[]-----中地址
且: &dst[1] < &dst[2] <... < &dst[15]
bigger than
val-------低地址
因此:当dst数组溢出的时候,将会是向高地址溢出,因此val1将会被覆盖。




近期评论