【问题标题】:Process finished with exit code -1073741819 (0xC0000005) - C, CLion But There Is Nothing Wrong With the Output进程以退出代码 -1073741819 (0xC0000005) 结束 - C,CLion 但输出没有任何问题
【发布时间】:2021-10-23 22:36:01
【问题描述】:

我已经完成了一个项目,在该项目中我需要使用 LinkedList 计算非常大的数字的乘法。但是,即使我得到了正确的答案,我也会收到一条错误消息。

进程以退出代码 -1073741819 (0xC0000005) 结束

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

这是示例输出。

Example with error code Example without error code

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

希望我能正确解释我的问题,提前谢谢。

【问题讨论】:

标签: c clion exit-code


【解决方案1】:

错误代码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?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 2018-11-10
    • 2020-06-13
    相关资源
    最近更新 更多