上个星期给通讯录添加一个拼音检索功能,在做的过程里,出现一个问题:在主调函数里的局部变量
值被莫名其妙的清空了。
char tname[32] = {0};
strcpy(tname, name);
_strupr(tname);
getpyhead(tpy, g_lib_records->recordArray[i].saveInfo.name);
_strupr(tpy);
即在上面代码里的tname变量在调用getpyhead()函数后,值被清空了。对这个问题的第一反应
是:栈溢出。不过这完全是胡猜的。上网查原因,也没找到答案。就开始浏览代码,看看哪些的内
存操作不正常,结果发现了在被调函数里,有个内存初始化操作越界了( memset(tpy, 0, 64) ),
外面传进去的是32字节,里面却清了64字节。就这样把tname的值给清了。