在用到指针的时候,一定要注意,否则被它整死了都死的不明不白的!
void SetInputParam(int arga,char ***argv)
{
int index=0,i;
char buffer[32]={0};
(*argv) = (char **)malloc(sizeof(char) * arga);
for (i=0;i<arga;i++)
{
printf(" ---- %d ------> arga= %d\n",i,arga);
(*argv)[i] = (char*)malloc(sizeof(char) *24);
memset((*argv)[i],0x0,24*sizeof(char));
}
}
void main()
{
int arga=5,i;
char **argv;
SetInputParam(arga,&argv);
for (i=0;i<arga;i++)
{
printf(" %2d ---> %s\n",i,argv[i]);
}
printf(" ------ 退出程序 ---------\n");
for (i=0;i<arga;i++)
{
printf(" ******> %2d\n",i);
free(argv[i]);
}
free(argv);
}
程序这样写,在调试的时候没有问题,就是在free(argv)的时候会出现段错误,free(argv[i])的时候也没有错误,假如没有free资源,在程序中一直运行都没有问题。可以加了free资源,全速运行,总是在第一个free(argv[i])就出现段错误。在查找程序好久,才发现原来malloc的时候就出现错误了,一时大意,在二维的argv中应该char*,由于之前程序没有free,导致运行都没有出现错误,在出现错误的时候,就没有检查它。没有良好的编程习惯会让自己死无葬身之地的,特别在大项目中。紧记教训