4

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

4

2 回答 2

9

在不安全的代码中,您可能会导致 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”,因为它溢出了缓冲区。

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

于 2010-10-22T19:09:30.367 回答
0

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

于 2010-10-22T18:50:22.237 回答