在实际编程过程中常会用到char*类型来表达字符串,而此时如果使用动态分配的方式并且在赋值时没有使用strcpy函数而是直接使用“=”,则在释放该指针空间时会产生堆溢出错误,造成该问题产生的原因大家都明白只是没注意。所以在此时char*赋值建议使用拷贝函数来处理,实例:
char** mType=0;
mType=(char**)malloc(10*sizeof(char*));
for (int i=0;i<10;i++)
{
mType[i]=(char*)malloc(256*sizeof(char));
}
strcpy_s(mType[0],256,"sss");//用此句则在释放mType指针空间时不会报错
//mType[0]="sss";//如果用此句则在下面删除时会报错
string mttt=mType[0];
for (int i=0;i<10;i++)
{
free(mType[i]);
}
free(mType);
mType=(char**)malloc(10*sizeof(char*));
for (int i=0;i<10;i++)
{
mType[i]=(char*)malloc(256*sizeof(char));
}
strcpy_s(mType[0],256,"sss");//用此句则在释放mType指针空间时不会报错
//mType[0]="sss";//如果用此句则在下面删除时会报错
string mttt=mType[0];
for (int i=0;i<10;i++)
{
free(mType[i]);
}
free(mType);