进程已完成,退出代码为 -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?
我完成了一个项目,其中我需要使用 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?