首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

str=(char*)malloc(4)咋解释的?该如何解决

2012-05-10 
str(char*)malloc(4)咋解释的?C/C++ codechar *strstr(char*)malloc(4)ZeroMemory(str,4)printf(siz

str=(char*)malloc(4)咋解释的?

C/C++ code
          char *str;     str=(char*)malloc(4);     ZeroMemory(str,4);     printf("sizeof(str):%d\n",sizeof(str));//4b     printf("strAddress0:0x%x\n",&str);//这个地址跟下边的地址一致      str="测试数据测试数据测试数据测试数据";     printf("strAddress1:0x%x\n",&str);/这个地址跟上边的地址一致      printf("strValue:%s",str);//输出的值也是str的值一个没少     free(str);     //1个汉字不是占用2b的空间吗?为啥4b的空间可以存放这么多?     //请问我什么地方理解错了?还请帮助! 


[解决办法]
这就是指针溢出的问题,内存会在已分配的4个字节空间的周围来存放多余的字符,但是这样很不安全,如果程序较大,有可能冲刷掉其他的数据

热点排行