好奇,C#中是否有人遇到堆/缓冲区溢出异常?
答案 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。我不确定你在寻找什么,所以你可能想澄清一下。