缓冲区溢出引起奇怪的bug

上个星期给通讯录添加一个拼音检索功能,在做的过程里,出现一个问题:在主调函数里的局部变量

值被莫名其妙的清空了。

			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的值给清了。

你可能感兴趣的:(通讯)