Bre*_*ren -2 c memory pointers memory-management
鉴于:
int a = 1;
int *p = &a;
int b = -1;
*++p = 2;
Run Code Online (Sandbox Code Playgroud)
是否存在阻止b从-1写入2的任何事情,如果在明显不可能的事件中,两个a和b在内存中彼此相邻写入?
C如何保护指针内存?
它没有.
是否存在阻止b从-1写入2的任何内容,如果在不太可能的情况下两个a和b在内存中彼此相邻写入?
没有.
并且这两个变量"在内存中彼此相邻"并非完全不可能.
C给你带来很多问题的能力,你不小心.
假设你的意思是最后一行*++p = 2,不,没有什么可以保护指针内存.修改指向它(最初)指向的对象外部的指针然后取消引用它会导致未定义的行为,并且可能发生任何事情.
在编写的代码中,*(a++)将解除引用操作符应用于非指针类型,这是一个约束违规,因此需要生成编译时诊断而不是编译...