标签: stack-overflow

比较日期时出现 StackOverflowException

我的结构中有一个 DateTime 属性字段。我正在尝试验证输入日期以确保输入的值不是将来的值。

我正在使用以下代码:

public struct Car
{
    public DateTime Year
    {
        get
        {
            return Year;
        }

        set
        {
            if (value > DateTime.Now)
                throw new InvalidOperationException("Date cannot be in the futrure");
            else
                Year = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我现在尝试运行此代码时,我不断收到 StackOverflowException 并显示消息“无法计算表达式,因为当前线程处于堆栈溢出状态”。

关于为什么会这样或者如何解决这个问题有什么想法吗?

-谢谢。

c# stack-overflow datetime struct properties

1
推荐指数
2
解决办法
686
查看次数

JTable setValueAt StackOverflowError

我已经搜索了一整天,但仍然找不到解决我的问题的简单答案:当我在另一个单元格中编辑它时,如何使 JTable 单元格更新它的值?

我想以某种方式使用它,fireTableCellUpdated但我不太明白如何使用它、何时使用、在什么对象上使用。

我想要的是获得某种监听器来监听该值是否发生变化。在这个特定的场景中,我有可编辑的第三列,我在其中存储金额,并且我希望该侦听器自动计算并设置一行中其他单元格中的值。我想出了这样的东西:

@Override
public void tableChanged(TableModelEvent e)
{
    BigDecimal withoutTax, tax, withTax;

    for(int i = 0; i < table.getRowCount(); i++)
    {
            BigDecimal amount = new BigDecimal(String.valueOf(table.getValueAt(i, 3)).replace(",", "."));
            BigDecimal price = new BigDecimal(String.valueOf(table.getValueAt(i, 4)).replace(",", "."));
            withoutTax = amount.multiply(price, new MathContext(2));
            table.setValueAt(withoutTax, i, 5);
            tax = withoutTax.multiply(new BigDecimal(0.23), new MathContext(2));
            table.setValueAt(tax, i, 7);
            withTax = withoutTax.add(tax, new MathContext(2));
            table.setValueAt(withTax, i, 8);
    }
}
Run Code Online (Sandbox Code Playgroud)

但这会导致StackOverflowError我猜测这是因为table.setValueAt激发了tableChanged侦听器,所以它进入了无限循环。

有人可以解释一下我怎样才能做到这一点吗?

java stack-overflow swing jtable

1
推荐指数
1
解决办法
1411
查看次数

定义 Haskell Fibonacci 时的堆栈溢出

只是尝试执行 Hal Daumé III 的 YAHT 手册的练习 3.7(第 31 页),我尝试定义斐波那契函数:

fibo 1 = 1
fibo 2 = 1
fibo n = fibo(n-1) + fibo(n-2)
Run Code Online (Sandbox Code Playgroud)

然后我要求

fibo(3)
Run Code Online (Sandbox Code Playgroud)

并得到:

*** Exception: stack overflow
Run Code Online (Sandbox Code Playgroud)

当我查看练习的解决方案时,我发现了完全相同的代码(不同之处在于该函数被称为 fib 而不是 fibo)。我究竟做错了什么?

(手册是 2006 年的,可能中间语言变了?)(讽刺的是我问 stackoverflow 一个堆栈溢出的问题……)

stack-overflow haskell fibonacci

1
推荐指数
1
解决办法
113
查看次数

尝试调用缓冲区溢出的隐藏函数

所以我试图对此代码执行基于堆栈的缓冲区溢出:

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>

void win()
{
  printf("well done!");
}

void vulnfunc(){
  char buffer[36];
  gets(buffer);
  printf("Buffer contents are %s\n",buffer);
}

int main(int argc,char**argv){
  vulnfunc();
}

Run Code Online (Sandbox Code Playgroud)

所以我用 44 个字节覆盖了 EIP(缓冲区的 36 个字节和额外的 8 个字节)。然后我得到了函数 win 的地址,将其更改0x53e58955为适当的地址,如下所示

\x55\x89\xe5\x53
Run Code Online (Sandbox Code Playgroud)

当我将两个字符串连接在一起作为输入时,它仍然不会调用该win()函数。我尝试添加"BBBB"填充来填充 ebp,但也没有运气。如果有人可以提供一些建议,我将非常感激。

它在 Ubuntu、x86_64 上运行

c stack-overflow gdb buffer-overflow

1
推荐指数
1
解决办法
874
查看次数

输出“Stack Overflow. Repeat 24047 times ...”是否意味着我在 dotnet 中发现了错误?

我为我的项目编写了新代码,当我运行单元测试时,我注意到 dotnet 崩溃了。

但我不知道为什么。因此,我将一些代码移至控制台应用程序并运行它。然后我得到这个输出:

Stack overflow.
Repeat 24047 times:
--------------------------------
   at [[ class and method names here ]]
--------------------------------
   at [[ class and method names here ]]
Run Code Online (Sandbox Code Playgroud)

一段时间后,出现 StackOverflowException:The runtime refused to evaluate the expression at this time.之后,dotnet 再次崩溃。

就是这样。所以构建过程(编译)是成功的,但 CLR 似乎崩溃了?

这是我的错还是 DotNet 中的错误?

编辑:这是一些代码以及我的问题的解释。这是我网站上的递归错误: https: //dotnetfiddle.net/RD69Mk

.net c# stack-overflow clr

1
推荐指数
1
解决办法
3786
查看次数

什么会导致此函数中的堆栈溢出?

我正在写一个休闲扫雷艇,想实现一种方法来跟踪现场空单元格,所以我写了这个算法:

//bigger array was taken to prevent out of range,when init mines and numbers
 /*creating mines in 1 to FIELD_NUM range(0 -non-active field,1-active field)
 * {
 *  0   0   0   0   0   0
 *  0   1   1   1   1   0
 *  0   1   1   1   1   0
 *  0   1   1   1   1   0
 *  0   1   1   1   1   0
 *  0   0   0   0   0   0
 * }
 */
//view is a display vect,x and y are mouse …
Run Code Online (Sandbox Code Playgroud)

c++ stack-overflow depth-first-search

1
推荐指数
1
解决办法
60
查看次数

现代计算机能否在机器级别区分数据和指令?

我正在阅读《The Shellcoder's Handbook》这本书,然后我发现了以下信息:

现代计算机对指令和数据没有真正的区别。如果处理器在应该看到数据时可以收到指令,那么它会很乐意执行所传递的指令。这一特性使得系统利用成为可能。

就在那时我意识到我们的现代系统是多么脆弱:(但这本书有点旧了,所以我做了一些研究,但找不到足够的信息来满足我。是否仍然不存在任何方法可以区分数据和数据指示?

附带问题 典型的汇编文件包含三个段: .text .bss 和.data

还有其他方法可以区分这些吗?[无元数据]

stack-overflow assembly cpu-architecture microprocessors penetration-testing

1
推荐指数
1
解决办法
210
查看次数

尝试使用递归反转数组时出现 StackOverflowError

我编写了一个用于反转数组的递归方法。

它产生一个StackOverflowError,我只是不明白为什么。我确信这很简单,但我已经被困在这里两个小时试图修复它。

我的代码:

public static void reverseArray(char[] input, int i, int j) {
    char temp;
    if (i >= j) return;
    
    else if (i < j) {
        temp = input[i];
        input[i] = input[j];
        input[j] = temp;
        reverseArray(input, i++, j--);
    }
}
Run Code Online (Sandbox Code Playgroud)

java stack-overflow arrays algorithm recursion

1
推荐指数
1
解决办法
54
查看次数

Haskell函数导致堆栈溢出

我对 Haskell 比较陌生,并且总体上对编程缺乏经验。一个函数在某些输入上导致堆栈溢出,我不知道为什么。

有问题的函数:

digitSum :: Integer -> Integer -> Integer
digitSum _ 1 = 1
digitSum base x = (x `mod` base) + digitSum base (x `div`base)
Run Code Online (Sandbox Code Playgroud)

在某些输入(例如 10 15、11 121、16 19、3 1234)上它可以工作,而在其他输入(例如 10 456)上它会中断有人可以向我解释一下这一点,以便我将来可以避免它吗?

stack-overflow haskell

1
推荐指数
1
解决办法
146
查看次数

这个简单的C#代码会导致堆栈溢出吗?

我有一个类库,主要将字符串记录到文本文件.它的一个方法是LogString(字符串str)所以我只是想知道基于下面的函数,如果我多次调用它超过600次,是否会导致stackoverflow?

    public void LogString(string str)
    {  
        try
        {
            if (filePathFilenameExists())
            {
                using (StreamWriter strmWriter = new StreamWriter(filePathFilename, true))
                {
                    strmWriter.WriteLine(str);
                    strmWriter.Flush();
                    strmWriter.Close();
                }
            }
            else
            {
                MessageBox.Show("Unable to write to file");
            }
        }
        catch (Exception err)
        {
            string errMsg = err.Message;
        }

    }
Run Code Online (Sandbox Code Playgroud)

c# stack-overflow

0
推荐指数
1
解决办法
811
查看次数