读书人

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

发布时间: 2012-05-10 16:02:39 作者: rapoo

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个字节空间的周围来存放多余的字符,但是这样很不安全,如果程序较大,有可能冲刷掉其他的数据

读书人网 >C语言

热点推荐