私はCプログラミングを初めて使用していて、変数xとyの値をFile1のmain関数で取得したコードを書き込もうとしました.c。ファイル内の他のすべての関数は、これらの変数の値を使用します。私はヘッダーファイルHeader.hでそれを宣言するために 'extern'キーワードを使用し、このヘッダーファイルはユーザーが入力したxとyの値も使用します。別のFile2.cもこれらの変数を使用します。 File1.cとFile2.cの両方にHeader.hが含まれていますソースファイルの定義中にヘッダファイルに "EXTERN"キーワードを使用
変数xとyをFile1.cのグローバル変数として定義しましたが、私は常にセグメンテーションフォルトを取得しています。私はどのように進めるべきですか?
EDIT:ここ はコードです:
#include<stdio.h>
#include<Header.h>
int x,y;
int main()
{
uint16_t *Buffer_1 = (uint16_t *)malloc(sizeof(uint16_t) *x*y*256);
uint16_t *slice = (uint16_t *)malloc(sizeof(uint16_t)*x*y);
printf("Enter value of x:);
scanf("%d",&x);
printf("Enter value of y:);
scanf("%d",&y);
memcpy(slice,Buffer_1,x*y*sizeof(uint16_t));
}
私はmemcpyのでセグメンテーションフォールトを取得します。次のように私はHEADER.HのY変数xを、宣言している:
#include <stdio.h>
extern int x;
extern int y;
コードを投稿してください。また、コールスタックまたはセグメンテーションが発生している場所を通知します。そうでなければ、あなたの説明に基づいてコードを想像し、解決策を提示することは非常に困難です。また、externキーワードがsegフォルトを引き起こしていないこともかなり確信できます。 :) – Jay
ジェイがお勧めしているように違反コードを投稿している間は、答えを出そうとする人たちができるように、[短く、自己完結型でコンパイルできる](http://sscce.org/)にしてくださいすぐに根本的な原因になる。 – ArjunShankar
xとyの値を知った後に*を割り当てることを検討してください。 scanf()の戻り値は無視しないでください。 –