C++将指针增加到未知内存区域

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仍然会有一个值/循环吗?

免责声明:我知道这很可能是不好的做法.这是一个纯粹的学术问题.

Pab*_*ruz 7

在内存中没有intdouble这样的东西.内存只是内存:字节的占位符.

所以,如果你继续将指针递增到int,你将指向内存中接下来的四个字节,就是这样.如果您尝试通过指向整数的指针使用该部分内存,您可能会将其内容视为int.

最终,您将指向未分配给您的进程的内存区域,并且您的程序将以SEGMENTATION FAULT退出.