【发布时间】:2020-01-07 16:01:41
【问题描述】:
假设我正在迭代一个数组,但超出了这个数组,因为我的循环很愚蠢。
如果内存中的一个对象直接位于与这个数组同类型的这个数组之后,可以
检查array[invalid_index] == nullptr
保护我?
检查索引(大小未知)是否对 C 数组有效的正确方法是什么?
【问题讨论】:
-
可以检查数组[invalid_index] == nullptr 保护我吗? -- 不能。
-
不能。无法保证 x 超出范围的 array[x] 甚至是可读的。
-
您为什么认为
nullptr有帮助? 0% 更接近真相... -
没有。检查索引是否对 C 数组有效的正确方法是计算大小或跟踪大小并将索引与该大小进行比较。
-
只有两种方法可以知道何时停止迭代,知道大小/有一个结束迭代器,或者使用一个标记值。
标签: c++ segmentation-fault nullptr memory-layout