即使在较新的 C++ 代码中,我也经常看到使用普通指针算法的数组迭代。我想知道它们到底有多安全,以及使用它们是否是个好主意。考虑这个片段(如果你把它放在 C 中,它也可以编译calloc
)new
:
int8_t *buffer = new int8_t[16];
for (int8_t *p = buffer; p < buffer + 16; p++) {
...
}
buffer
当碰巧在地址0xFFFFFFF0
(在 32 位地址空间中)或0xFFFFFFFFFFFFFFF0
(64 位)分配时,这种迭代不会导致溢出并完全跳过循环吗?据我所知,这将是一个非常不走运但仍有可能发生的情况。