C++ 运行时错误-非零异常

C++ 运行时错误-非零异常,c++,c,arrays,error-handling,runtime,C++,C,Arrays,Error Handling,Runtime,我的编程老师给了我这个问题,让我用c编写代码: 给定N个整数A和一个数字K的数组。在一个回合中,选择所有Ai的最大值,我们称之为MAX。然后是Ai= MAX-Ai是针对每个1执行的,我猜这与您针对错误条件的各种exit(1)语句有关。正如Dave Costa指出的,exit(1)可能是原因 另一个可能的问题是所分配阵列的大小: arr = (long int *)malloc(sizeof(int)*n); 应该是: arr = malloc(sizeof(long int)*n); 请注意

我的编程老师给了我这个问题,让我用c编写代码: 给定N个整数A和一个数字K的数组。在一个回合中,选择所有
Ai
的最大值,我们称之为MAX。然后是Ai=
MAX-Ai
是针对每个
1执行的,我猜这与您针对错误条件的各种
exit(1)
语句有关。

正如Dave Costa指出的,
exit(1)
可能是原因

另一个可能的问题是所分配阵列的大小:

arr = (long int *)malloc(sizeof(int)*n);
应该是:

arr = malloc(sizeof(long int)*n);
请注意,常数不需要使用
pow

c1 = (long int)pow(10,5);
c2 = (long int)pow(10,9);
可替换为:

c1 = 1e5L;
c2 = 1e9L;

但它仍然给出了同样的错误。。。。你能看到我的代码中还有其他错误吗?如果有,请告诉我。
long int
int
的大小不一定相同。@Marco:但是如果我想退出代码,如果这些条件中的任何一个不满足,我该怎么办?我尝试过使用不同的退出非零值,因为退出非零值是异常终止,但仍然没有发生任何事情。是不是我们不能用同一个值多次退出。@JoachimIsaksson:我不明白你的评论。我知道long int和int的大小不一样,所以我将所有变量都声明为long int,因为我必须检查约束值,这些约束值在问题中给出,在intYes中无法容纳,但您已经将
arr
设置为指向分配给
n
整数的内存,而不是
n
长整数。这很可能会损坏内存,并导致出现错误
sizeof(int)
这是codechef提出的问题。我希望codechef不是你的老师:谢谢你指出那个错误。我已经改正了,但现在它仍然在说同样的错误。
arr = malloc(sizeof(long int)*n);
c1 = (long int)pow(10,5);
c2 = (long int)pow(10,9);
c1 = 1e5L;
c2 = 1e9L;