最高指针不是通过指针算术不能递增的指针吗?
#include <iostream>
int main()
{
// Find the largest pointer
int x = 0;
int* px = &x;
while ((px+1) != px)
++px;
std::cout << "The largest pointer is: " << px;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
产量
Timeout
Run Code Online (Sandbox Code Playgroud)
如前所述,你有一个无限循环,因为条件永远不会false.
话虽这么说,你正在做的是未定义的行为,非法的C++.指针算法只适用于指向同一数组的指针(并且单个对象被视为一个元素的数组)并且正好超过它的末尾.即使您修复了循环,也不能指望程序的合理结果.
我怀疑它的值是指针的理论最大值(转换为整数),但它可能不适合你的程序.有些东西需要考虑虚拟地址空间和分段内存模型.无论如何,指针的确切值(除了)不是你应该关注的东西.您可以通过获取现有对象的地址或通过调用分配函数来获取指针.std::numeric_limits<uintptr_t>::max()nullptr
NB我认为你有一种误解,试图增加超出其最大值的整数类型将不会做任何事情.这是不正确的 - 无符号整数将回绕到0并且使用有符号整数再次获得未定义的行为(请参阅有符号整数溢出).
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |