面试题答案
一键面试- 数组越界问题:
- 在
main
函数中,for
循环for (int i = 0; i < 6; ++i)
,而createArray
函数返回的数组arr
实际大小为5。 - 当
i
等于5时,ptr[5]
访问的内存位置超出了数组arr
的有效范围,导致数组越界。因为数组的有效索引范围是从0到4(数组大小为5)。
- 在
- 指针悬挂问题:
- 在
createArray
函数中,arr
是一个局部数组,其生命周期在函数结束时就结束了。 - 当
createArray
函数返回arr
指针时,arr
数组所占用的栈空间被释放。 - 然而在
main
函数中,ptr
仍然指向这个已经释放的内存空间,这就导致了指针悬挂问题。后续通过ptr
访问内存会导致未定义行为。
- 在