0

次のコードは問題なく動作し (コード ブロック 10.05)、さまざまなテスト ケースでコンパイル時/実行時エラーは表示されませんでした。しかし、プログラミング Web サイトでオンラインで送信すると、実行時エラーが表示されました。

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

/*

 Here comes newPos()

*/
int main()

{
int t,i,n,k,j;
scanf("%d",&t);
int* a;

for(i=0;i<t;i++)
{
    scanf("%d",&n);
    free(a);

    a=(int*) malloc(n);

    for(j=0;j<n;j++)
        scanf("%d",&a[j]);
    scanf("%d",&k);

    printf("%d\n",newPos(a,n,k));

}


return 0;
}

そして、いくつかの変更を加えた後、.cpp ファイルに変更しました。つまり、free(a) の代わりに delete a; ステートメントを使用しました。a=(int*) malloc(n) の代わりに、ステートメント a=new int[n]; を使用しました。その後、コンパイラとオンラインの両方で正常に実行されました。

4

4 に答える 4