【发布时间】:2019-11-14 17:01:06
【问题描述】:
假设我们分配了一个包含 10 个元素的字节数组。定义访问范围内的任何元素。
我了解越界读取和写入元素是未定义的行为。获取超出范围的数组元素的地址是未定义的行为吗?
例子:
#include <stdint.h>
#include <string.h>
int main(void)
{
uint8_t buf[10];
memset(buf, 0, sizeof(buf));
// Defined behavior
uint8_t a_value = buf[9];
// Defined behavior
buf[0] = 1;
// Undefined behavior?
uint8_t *addr = &buf[10];
}
【问题讨论】:
标签: c arrays undefined-behavior