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