在 C 中,如果我们只访问位于分配内存中的元素,那么将内存分配给指向数组的指针是否“合法”?还是这会调用未定义的行为?
int (*foo)[ 10 ]; //Pointer to array of 10 ints
foo = malloc( sizeof( int ) * 5 ); //Under-allocation!
//Only enough memory for 5 ints
//Now we only ever access (*foo)[ 0 - 4 ]
如果这本身不是未定义的行为,那么访问另一个不相关的对象,其内存地址恰好落在数组未分配部分的地址空间内,是否会导致严格混叠违规?