C在数组末尾超过2或更多的地址是合法的吗?

C在数组末尾超过2或更多的地址是合法的吗?,第1张

概述从 Take the address of a one-past-the-end array element via subscript: legal by the C++ Standard or not?起 似乎有一种语言特定于获取一个地址而不是数组结尾. 如果没有被解雇,为什么在结束时2或2,000,000会成为问题? 看一些简单的循环: int array[];...for (int i 从 Take the address of a one-past-the-end array element via subscript: legal by the C++ Standard or not?起

似乎有一种语言特定于获取一个地址而不是数组结尾.

如果没有被解雇,为什么在结束时2或2,000,000会成为问题?

看一些简单的循环:

int array[];...for (int i = 0: i < array_max; ++i){       int * x = &array[i *2];      // Is this legal       int y=0;       if (i * 2 < array_max)       // We check here before dereference       {              y = *x;               // Legal dereference       }       ...}

为什么或在什么时候这变得不确定,在实践中它只是将ptr设置为某个值,为什么如果它没有被重新引用它将是未定义的?

更具体地说 – 除了预期会发生什么之外,还有什么例子?

解决方法 将地址超出数组末尾的关键问题是分段体系结构:您可能溢出指针的可表示范围.现有规则已经产生了一定程度的痛苦,因为这意味着最后一个对象不能正好在一个段的边界上.但是,形成这个地址的能力已经确立. 总结

以上是内存溢出为你收集整理的C在数组末尾超过2或更多的地址是合法的吗?全部内容,希望文章能够帮你解决C在数组末尾超过2或更多的地址是合法的吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1234769.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存