我是C编程的新手,并且正在尝试编写一个代码,其中变量x和y的值取自File1.c的main函数中的用户。文件中的所有其他函数都使用这些变量的值。我使用了' extern'在Header文件Header.h中声明它的关键字,此头文件也使用用户输入的x和y的值。另一个File2.c也使用了这些变量。 File1.c和File2.c都包含Header.h
我已经将变量x和y定义为File1.c中的全局变量,但我不断得到分段错误。我该怎么办?
编辑: 这是代码:
#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中声明了变量x,y,如下所示:
#include <stdio.h>
extern int x;
extern int y;
答案 0 :(得分:1)
问题是,当你分配内存时你有x和y等于0,之后你将这些内存用于复制,这将导致崩溃。
你需要在
之后分配typeof(df$old.la)
在继续之前检查NULL。