我正在尝试为学校项目使用C#创建缓冲区溢出:
unsafe
{
fixed (char* ptr_str = new char[6] {'H', 'a', 'l', 'l', 'o', ','})
{
fixed (char* ptr_str2 = new char[6] {'W', 'e', 'r', 'e', 'l', 'd'})
{
fixed (char* ptr_str3 = new char[6] {'!', '!', '!', '!', '!', '!'})
{
for (int i = 0; i < 8; i++)
{
ptr_str2[i] = 'a';
}
for (int i = 0; i < 6; i++)
{
this.Label2.Text += ptr_str[i];
this.Label3.Text += ptr_str2[i];
this.Label4.Text += ptr_str3[i];
}
}
}
}
}
我曾以为会把ptr_str2
淹没,从而覆盖ptr_str
中的字符。 但是实际上并没有发生这种情况。 它确实被执行了,但是ptr_str
中的值并没有被覆盖。
有人能帮忙解决这个问题吗? 我不明白自己做错了什么。