读书人

关于一个函数转化的有关问题新手提问

发布时间: 2012-04-24 14:15:38 作者: rapoo

关于一个函数转化的问题,新手提问,谢谢
我这个转化函数有时候可以,有时候又不行,出现stack around the variable was corrupted
我给charstring 传递 char *temp="sdfsdf"的时候,这样的,就可以,但是我传递(char *)(&structname),这个就不行
也就是我传递结构体转化char * 后,这个函数就运行不正常了

C/C++ code
char * charToHexString(char * charString,long charsize){   int charByte=charsize*2;   char * returnchar=new char[charByte];   memset(returnchar,0,2);   for(long i=0;i<charsize;i++){     char hexCode[3]={'\0'};     sprintf(hexCode,"%02X",charString[i]);      strcat(returnchar,hexcode);   return returnchar;   }}





[解决办法]
structname 这是什么东西?

return returnchar;
} 为什么for的结束部分在return后面?

int charByte=charsize*2;
char * returnchar=new char[charByte];
最后结束符 \0 的空间呢?
[解决办法]
无非是越界访问了。sprintf(hexCode,"%02X",charString[i]);看看这句吧
[解决办法]
char * returnchar=new char[charByte];改成
char * returnchar=new char[charByte + 1];

memset(returnchar,0,2);改成
memset(returnchar,0,charByte + 1);
再试试看看

你的return放的位置也不对,这样只能转换一次
[解决办法]
int charByte=charsize*2+1;
char * returnchar=new char[charByte];

读书人网 >C++

热点推荐