vc 运行程序有内存错误,Tc运行没错。

来源:百度知道 编辑:UC知道 时间:2024/05/02 18:40:35
vc一编译没有错误,没有警告。但是运行到下面这段代码是就弹出内存不能写的错误:void TEST1(void)
{
int X;
int * Y=NULL;
printf("\n INPUT A NUMBER:");
scanf("%d",&X);
printf("\n INPUT B NUMBER:");
scanf("%d",Y); //错误发生在这里
// *Y = X; 我用这个语句也会产生同样的错误
printf("\n X= %d",X);
printf("\n Y= %d",*Y);
getch();
}

//我用的是中文版,会不会这是系统的问题或者是vc版本的问题

scanf("%d",Y); //错误发生在这里
这里 会根据Y的值, 查找Y指向的内存地址, 但是Y = NULL 显然会出现 读取地址0x0000的错误

*Y 也这个原因 Y是空指针, 指不到东西 所以不能进行 *Y 取值操作

int yy;
int * Y = &yy;
或者
int * Y = new int[4];

这两种方法也是有区别的,请注意

这样Y指向可用的内存,就不会出现错误了

另外,TC的保护机制 使你看不到错误,但是这个语句是无法正确执行的