我们在使用指针是,有时候需要强制转换指针的类型。如:
char a;
int *ptr = (int *)&a;
...........
...............
ptr++;
*ptr = 123;
上面强制转换过程中。把char型指针&a转换成int型指针。但在访问中有时会出错。
在指针的强制类型转换:ptr1=(TYPE*)ptr2中,如果sizeof(ptr2的类型)大于sizeof(ptr1的类型),那么在使用指针ptr1来访问ptr2所指向的存储区时是安全的。如果sizeof(ptr2的类型)小于sizeof(ptr1的类型),那么在使用指针ptr1来访问ptr2所指向的存储区时是不安全的。
char a;
int *ptr = (int *)&a;
...........
...............
ptr++;
*ptr = 123;
上面强制转换过程中。把char型指针&a转换成int型指针。但在访问中有时会出错。
在指针的强制类型转换:ptr1=(TYPE*)ptr2中,如果sizeof(ptr2的类型)大于sizeof(ptr1的类型),那么在使用指针ptr1来访问ptr2所指向的存储区时是安全的。如果sizeof(ptr2的类型)小于sizeof(ptr1的类型),那么在使用指针ptr1来访问ptr2所指向的存储区时是不安全的。
本文探讨了在C/C++编程中,不同类型的指针进行强制类型转换时的安全性问题。详细介绍了当目标指针类型大小小于源指针类型大小时,访问内存可能会导致的问题。

585

被折叠的 条评论
为什么被折叠?



