运行 黑客排名问题中的时间错误:C 中的一维数组

Run Time Error in Hacker Rank problem : 1D Arrays in C

我正在尝试在 Hacker Rank 上解决 C 中的一维数组问题: here

我们必须打印数组中整数的总和。

我的代码:

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

int main() 
{
    int n;
    int sum = 0;
    int *a = malloc(n * sizeof(int));
    scanf("%d", &n);
    getchar();
    for (int i = 0; i < n; i++)
    {
       scanf("%d ", &a[i]);
       sum += a[i];
    }
    printf("%d", sum);
    free(a);   
    return 0;
}

但是编译器给出了一些 select 测试用例的错误。 编译器信息(错误):

Compiler Message:
Abort Called

Error (stderr):
1.corrupted size vs. prev_size
2.Reading symbols from Solution...done.
3.[New LWP 129788]
4.[Thread debugging using libthread_db enabled]
5.Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
6.Core was generated by `./Solution'.
7.Program terminated with signal SIGABRT, Aborted.
8.#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50

一些观察:

  1. 此程序在 VS Code 中 运行 正确。
  2. 我给出的自定义输入(即自定义测试用例)编译成功(使用 Hacker Rank 的“测试自定义输入”功能)。
  3. 但是只有一些 select 测试用例给出了这个错误。

请指出我的代码中可能导致此问题的错误。

在动态初始化内存之前指定数组的大小space。如何在输入数组大小之前初始化 space?

并且动态分配内存时必须指定cast类型

此处:a = (cast_type *) malloc (byte_size);

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

int main(){
           int n; 
           int sum=0; 

           printf("Enter size of the array:\n");
           scanf("%d", &n);

           int *a = (int*)malloc(n * sizeof(int));

           for (int i = 0; i < n; i++) {
                scanf(" %d", &a[i]);
           }

           for (int i = 0; i < n; i++) {
                sum += a[i];
           }
           printf("Sum of array elements is: %d\n", sum);
           free(a); 
           return 0;
        }