堆/缓冲区溢出异常

时间:2010-10-22 18:43:47

标签: c# exception buffer-overflow

好奇,C#中是否有人遇到堆/缓冲区溢出异常?

2 个答案:

答案 0 :(得分:8)

您可以在不安全的代码中导致C#中的缓冲区溢出。例如:

public unsafe struct testo
{
    public int before;
    public fixed int items[16];
    public int after;
}

testo x = new testo();
x.after = 1;
for (int i = 0; i <= 16; ++i)
{
    unsafe
    {
        x.items[i] = 99;
     }
}
Console.WriteLine(x.after);

上面会打印“99”,因为它溢出了缓冲区。

如果没有不安全的代码,我不知道有什么办法导致缓冲区溢出而不会触发异常。

答案 1 :(得分:0)

根据缓冲区溢出的含义,IndexOutOfRangeException是溢出引起的异常。您可以通过访问超出其分配大小的数组索引来轻松获得它。同样做足够的递归,你可以获得StackOverflowException。我不确定你在寻找什么,所以你可能想澄清一下。