进程已完成,退出代码为 -1073741819 (0xC0000005) - C、CLion 但输出没有任何问题

Process finished with exit code -1073741819 (0xC0000005) - C, CLion But There Is Nothing Wrong With the Output

我完成了一个项目,其中我需要使用 LinkedList 计算非常大的数字的乘法。然而,尽管我得到了正确的答案,但我收到了一条错误消息。

Process finished with exit code -1073741819 (0xC0000005)

只要其中一个数字非常大,就会发生这种情况。我看过旧帖子,但找不到与我的情况相似的内容。

这是示例输出。

Example with error code Example without error code

我将数字作为数字存储在 LinkedList 中。所以,每个节点都有一个数字,我猜 int/long 应该没有任何问题,但我找不到是什么造成的。当我调试代码时,我在代码末尾得到错误指针,那里没有代码。 Debug

我希望我能正确解释我的问题,在此先感谢。

错误代码 0xC0000005 在 Microsoft Windows 中表示“访问冲突”,相当于 Linux “分段错误”。

问题大概出在以下代码:

char num1[] = "";

[...]

printf( "Num1: " );
gets( num1 );

如果用户输入的不仅仅是空行,这将导致 buffer overflow。这是因为数组 num1 只能容纳一个字符(空终止字符已经需要它)。

我建议您改为使用以下代码:

char num1[100];

[...]

printf( "Num1: " );
fgets( num1, sizeof num1, stdin );

num2相关的代码也有同样的问题

我强烈建议您阅读以下内容:

Why is the gets function so dangerous that it should not be used?