我已阅读以下帖子:
这表明返回指向堆分配变量的指针是可以的。但是,从技术上讲,指针是否是“堆栈分配的变量”,然后在函数返回时会被释放?
例如:
int* test(){
int arr[5];
int *ptr = arr;
return ptr; //deallocated ptr?
}
int *test2(){
int arr[5];
return arr;
}
测试中
另外,说arr 是一个指向某个新创建的 int 数组 arr 的指针是否正确,指向&arr[0]
. 如果arr
不是指针,为什么返回它满足函数返回类型是有效的?
由于 ptr 和 arr 都应该是堆栈分配的,为什么代码只能在test()
而不是test2()
?test() 是否给出未定义的行为?