求问一个关于指针的奇怪问题
#include <iostream>
using namespace std;
int* getPrime()
{
int a[2];
a[0] = 2;
a[1] = 5;
return a;
}
int main()
{
int *a;
a = getPrime();
cout << a[0];
cout << a[1];
}
这段代码,根据调试,在函数返回之后还是一切正常的,但是在输出第一个数之后,整个数组都会变得混乱,请问这是为什么,完全不能理解啊……
PS:如果在函数中使用动态数组则一切正常
[解决办法]
因为int a[2]是一个局部变量,当函数执行完以后,也就会释放了这快内存空间的!
之后再访问就是无效的数据了,数据是什么是不可预测的
当然可以
int *a = (int *)malloc(sizeof(int) * 2);
//记得使用完 free就好!