运行下面的程序,观察执行结果,指出该程序是如何通过指针造成安全性隐患的,思考如何避免这种情况的发生。
正确答案:
在32位平台下,一般int是4个字节,double 是8个字节,代码第5、6行强制转换后的赋值过程中修改了arr[0] , arr [1] , 的内存空间,因此导致arr[1]的非预期输出。
避免这种情况的措施:1、尽量避免使用类型转换;2、必须使用类型转换时,尽量开辟新的内存空间,在新内存空间中完成转换。3、必须使用原有内存空间时,要特别注意各种数据类型在不同平台下的内存占用大小。
答案解析:有
微信扫一扫手机做题