在VC程序中我定义了一个结构如下
typedef struct _paramStru
{
int paramType;//参数类型
union paramData//参数
{
int i_data;
char ch_array[20];
int i_array[2];
}Value;
}ParamStru;
在使用时,由于不小心进行了如下操作:
ParamStru *param=new ParamStru;
param->paramType=MM_KVAR_PARAM;
param->Value.i_array[0]=11;
param->Value.i_array[1]=22;
param->Value.i_array[2]=33;
param->Value.i_array[3]=44;
param->Value.i_array[4]=55;
param->Value.i_array[5]=66;
......
delete param;
但是程序编译没问题,使用也没问题,我很纳闷,但当我把ch_array长度减少到2时,程序就出现异常。请教高手,能给解释一下吗?谢谢!
typedef struct _paramStru
{
int paramType;//参数类型
union paramData//参数
{
int i_data;
char ch_array[20];
int i_array[2];
}Value;
}ParamStru;
在使用时,由于不小心进行了如下操作:
ParamStru *param=new ParamStru;
param->paramType=MM_KVAR_PARAM;
param->Value.i_array[0]=11;
param->Value.i_array[1]=22;
param->Value.i_array[2]=33;
param->Value.i_array[3]=44;
param->Value.i_array[4]=55;
param->Value.i_array[5]=66;
......
delete param;
但是程序编译没问题,使用也没问题,我很纳闷,但当我把ch_array长度减少到2时,程序就出现异常。请教高手,能给解释一下吗?谢谢!
我使用VC6.0,编译是没有问题,但程序运行到delete的时候就会发生错误.
不对你不管吧char ch_array[n];n设到几程序都可执行。只不过是在delete 时报错,包括char ch_array[20];