下面的程序
class A
{
public:
map<int, int> mi;
}
int main()
{
A p;
char c[5] = {0};
strcpy(c, "xxxxxxxxxx ... xxxxxxxxx");//一个足够越界那么长的字符串
cout << a.mi[1] <<endl;
//这是会发生崩溃
return 0;
}
为什么对象a在c前面,对c那里的地址赋值会发生覆盖?
因为是在栈上,所以向低地址方向覆盖
下面的程序
class A
{
public:
map<int, int> mi;
}
int main()
{
A p;
char c[5] = {0};
strcpy(c, "xxxxxxxxxx ... xxxxxxxxx");//一个足够越界那么长的字符串
cout << a.mi[1] <<endl;
//这是会发生崩溃
return 0;
}
为什么对象a在c前面,对c那里的地址赋值会发生覆盖?
因为是在栈上,所以向低地址方向覆盖