c言語についての質問です。

Writer: admin Type: clarksre Date: 2019-01-08 00:00
c言語についての質問です。下記のようなプログラムを組み実行したところ配列の入力の際に「SIGSEGV on thread : 1082200064」という表示が出て実行できません。これはエラーなのですか?#include <stdio.h>void rev_intarycopy(int v1[],const int v2[],int n){ int i; for(i=0;i<n;i++){ v1[i]=v2[n-1-i]; } }int main(){ int a,j,k; printf("a=");scanf("%d",&a); int b[a],c[a]; for(j=0;j<a;j++){ scanf("%d",&b[j]); } rev_intarycopy(c, b, a); for(k=0;k<a;k++){ printf("%d",c[k]); } return 0; }共感した0###実行環境はunix系OSなんだろうと想像するけど。> これはエラーなのですか?はい。C言語の、というより、OSの話かな。あなたのプログラムが、ありえないメモリを参照しようとしたんで、OSが強制終了させたよん、というのがSIGSEGV.たぶん、あなたのプログラムにバグがあるってことです。おそらくポインタ関連で。ナイス0
###ぱっと見。質問文にあるコードは、明らかな誤りバグは見当たらない。最初の入力 a に、かなり巨大な数値を入力したとかじゃない?可変長配列(VLA)使ってるよね?# int b[a],c[a];# の部分。関数内ローカル変数は、そんなに巨大に確保できないよ。

 

TAG