Dfo*_*owj 2 c++ memory pointers
我有一个关于C/C++处理盲目递增指针的行为的查询.
所以,我有一个指向int作为函数参数的指针
func(int* thePointer) {...
我在这个函数里面有一个循环
while(*thePointer) {
++thePointer;
}
Run Code Online (Sandbox Code Playgroud)
据我所知,只要存在int超出此指针的内存中,循环将继续,但如果内存属于另一种内存类型的部分怎么办?假设你增加到a的前4个字节double.在这种情况下,int仍然会有一个值/循环吗?
免责声明:我知道这很可能是不好的做法.这是一个纯粹的学术问题.
在内存中没有int或double这样的东西.内存只是内存:字节的占位符.
所以,如果你继续将指针递增到int,你将指向内存中接下来的四个字节,就是这样.如果您尝试通过指向整数的指针使用该部分内存,您可能会将其内容视为int.
最终,您将指向未分配给您的进程的内存区域,并且您的程序将以SEGMENTATION FAULT退出.